最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL使用的常見(jiàn)問(wèn)題解決與應(yīng)用技巧匯總

 更新時(shí)間:2017年11月28日 10:41:30   作者:waterandair  
這篇文章主要給大家總結(jié)介紹了我們平時(shí)在使用MySQL遇到的常見(jiàn)問(wèn)題解決與應(yīng)用技巧的相關(guān)資料,包括忘記MySQL的root密碼、如何處理 myisam 存儲(chǔ)引擎的表?yè)p壞、數(shù)據(jù)目錄磁盤(pán)空間不足的問(wèn)題等等問(wèn)題,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

在MySQL日常開(kāi)發(fā)或者是維護(hù)中,有一些問(wèn)題或是故障往往是難以避免的,如丟失密碼、表?yè)p壞。在此總結(jié)一下常見(jiàn)的問(wèn)題,以備今后所需。

一、 忘記 MySQL 的 root 密碼

1. 登錄到數(shù)據(jù)庫(kù)所在的服務(wù)器,手工 kill 掉 mysql 進(jìn)程。

(1) 登錄到數(shù)據(jù)庫(kù)所在的服務(wù)器,手工 kill 掉 MySQL 進(jìn)程:

root@bogon:/data/mysql# kill `cat ./mysql.pid`

其中,mysql.pid 指的是 MySQL 數(shù)據(jù)目錄下的 pid 文件,它記錄了 MySQL 服務(wù)的進(jìn)程號(hào)。

(2) 使用 --skip-grant-tables 選項(xiàng)重啟 MySQL 服務(wù):

zj@bogon:/data/mysql$ sudo /usr/local/mysql/bin/mysqld --skip-grant-tables --user=root &

--skip-grant-tables 選項(xiàng)意思是啟動(dòng) MySQL 服務(wù)時(shí)跳過(guò)權(quán)限表認(rèn)證。啟動(dòng)后,連接到 MySQL 的 root 將不需要口令。

(3) 用空密碼的 root 用戶(hù)連接到 mysql ,并且更改 root 口令:

zj@bogon:/usr/local/mysql/bin$ mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.18-log Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> set password = password('123456');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
MySQL [(none)]> use mysql
Database changed
MySQL [mysql]> update user set authentication_string=password('123456') where user="root" and host="localhost";
Query OK, 1 row affected, 1 warning (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 1

MySQL [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MySQL [mysql]> exit;
Bye

****************************************************************

zj@bogon:/usr/local/mysql/bin$ mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.18-log Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

由于使用了 --skip-grant-tables 選項(xiàng)啟動(dòng),使用 “set password” 命令更改密碼失敗,直接更新 user 表的 authentication_string(測(cè)試版本為5.7.18,有的版本密碼字段是 ‘password') 字段后,更改密碼成功。刷新權(quán)限表,使權(quán)限認(rèn)證重新生效。重新用 root 登錄時(shí),就可以使用剛剛修改后的口令了。

二、如何處理 myisam 存儲(chǔ)引擎的表?yè)p壞

有的時(shí)候可能會(huì)遇到 myisam 表?yè)p壞的情況。一張損壞的表的癥狀通常是查詢(xún)意外中斷,并且能看到下述錯(cuò)誤:

  • 'table_name.frm' 被鎖定不能更改
  • 不能找到文件 'tbl_name.MYYI' (errcode:nnn)
  • 文件意外結(jié)束
  • 記錄文件被毀壞
  • 從表處理器得到錯(cuò)誤 nnn。

通常有以下兩種解決方法:

1. 使用 myisamchk 工具

使用 MySQL 自帶的 myisamchk 工具進(jìn)行修復(fù):

shell> myisamchk -r tablename

其中 -r 參數(shù)的含義是 recover,上面的方法幾乎能解決所有問(wèn)題,如果不行,則使用命令:

shell> mysiamchk -o tablename

其中 -o 參數(shù)的含義是 --safe-recover,可以進(jìn)行更安全的修復(fù)。

2. 使用 sql 命令

使用 MySQL 的 check table 和 repair table 命令一起進(jìn)行修復(fù),check table 用來(lái)檢查表是否有損壞;repair table 用來(lái)對(duì)壞表進(jìn)行修復(fù)。

三、 數(shù)據(jù)目錄磁盤(pán)空間不足的問(wèn)題

系統(tǒng)上線(xiàn)后,隨著數(shù)據(jù)量的不斷增加,會(huì)發(fā)現(xiàn)數(shù)據(jù)目錄下的可用空間越來(lái)越小,從而給應(yīng)用造成了安全隱患。

1. 對(duì)于 myisam 存儲(chǔ)引擎的表

對(duì)于 myisam 存儲(chǔ)引擎的表,在建表時(shí)可以用如下選項(xiàng)分別制定數(shù)據(jù)目錄和索引目錄存儲(chǔ)到不同的磁盤(pán)空間,而默認(rèn)會(huì)同時(shí)放在數(shù)據(jù)目錄下:

data directory = 'absolute path to directory'
index directory = 'absolute path to directory'

如果表已經(jīng)創(chuàng)建,只能先停機(jī)或者將表鎖定,防止表的更改,然后將表的數(shù)據(jù)文件和索引文件 mv 到磁盤(pán)充足的分區(qū)上,然后在原文件處創(chuàng)建符號(hào)鏈接即可。

2. 對(duì)于 innodb 存儲(chǔ)引擎的表

因?yàn)閿?shù)據(jù)文件和索引文件是存放在一起的,所以無(wú)法將它們分離。當(dāng)磁盤(pán)空間出現(xiàn)不足時(shí),可以增加一個(gè)新的數(shù)據(jù)文件,這個(gè)文件放在充足空間的磁盤(pán)上。

具體實(shí)現(xiàn)方法是在參數(shù) innodb_data_file_path 中增加此文件,路徑寫(xiě)為新磁盤(pán)的絕對(duì)路徑。

例如,如果 /home 下空間不足,希望在 /home1 下新增加一個(gè)可自動(dòng)擴(kuò)充數(shù)據(jù)的文件,那么參數(shù)可以這么寫(xiě):

innodb_data_file_path = /home/ibdata1:2000M;/home1/ibdata2:2000M:autoextend

參數(shù)修改后,必須重啟數(shù)據(jù)庫(kù)才可以生效。

四、DNS反向解析的問(wèn)題 (5.0 以后的版本默認(rèn)跳過(guò)域名逆向解析)

在客戶(hù)端執(zhí)行 show processlist 命令,有時(shí)會(huì)出現(xiàn)很多進(jìn)程,類(lèi)似于:

unauthenticated user | 192.168.10.10:55644 | null | connect | null | login | null

這些進(jìn)程會(huì)累計(jì)的越來(lái)越多,并且不會(huì)消失,應(yīng)用無(wú)法正常相應(yīng),導(dǎo)致系統(tǒng)癱瘓。

MySQL 在默認(rèn)情況下對(duì)于遠(yuǎn)程連接過(guò)來(lái)的 IP 地址會(huì)進(jìn)行域名的逆向解析,如果系統(tǒng)的 hosts 文件中沒(méi)有與之對(duì)應(yīng)的域名,MySQL 就會(huì)將此連接認(rèn)為是無(wú)效用戶(hù),所以下進(jìn)程中出現(xiàn) unauthenticated user 并導(dǎo)致進(jìn)程阻塞。

解決的方法很簡(jiǎn)單,在啟動(dòng)時(shí)加上 --skip-name-resolve 選項(xiàng),則 MySQL 就可以跳過(guò)域名解析過(guò)程,避免上述問(wèn)題。

五、mysql.sock 丟失后如何連接數(shù)據(jù)庫(kù)

在 MySQL 服務(wù)器本機(jī)上連接數(shù)據(jù)庫(kù)時(shí),經(jīng)常會(huì)出現(xiàn) mysql.sock 不存在,導(dǎo)致無(wú)法連接的問(wèn)題。這是因?yàn)槿绻付?localhost 作為一個(gè)主機(jī)名,則 mysqladmin 默認(rèn)使用 Unix 套接字文件連接,而不是 tcp/ip。而這個(gè)套接字文件(一般命名為 mysql.sock)經(jīng)常會(huì)因?yàn)楦鞣N原因而被刪除。通過(guò) --protocol=TCP|SOCKET|PIPE|MEMORY 選項(xiàng),用戶(hù)可以顯式地指定連接協(xié)議,下面演示使用了 Unix 套接字失敗后使用 tcp 協(xié)議連接成功的例子。

1. Unix 套接字連接:

zj@bogon:~$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

2. tcp 連接

zj@bogon:~$ mysql --protocol=TCP

六、MyISAM表過(guò)大,無(wú)法訪(fǎng)問(wèn)問(wèn)題

首先我們可以通過(guò)myisamchk命令來(lái)查看MyISAM表的情況。如下圖,我查看admin表


  • datefile length代表當(dāng)前文件大小
  • keyfile length代表索引文件大小
  • max datefile length 最大文件大小
  • max keyfile length 最大索引大小

可以通過(guò)如下命令來(lái)進(jìn)行擴(kuò)展數(shù)據(jù)文件大小

alter table table_name MAX_ROWS=88888888 AVG_ROW_LE=66666

七、數(shù)據(jù)目錄磁盤(pán)空間不足的問(wèn)題

針對(duì)MyISAM存儲(chǔ)引擎

可以將數(shù)據(jù)目錄和索引目錄存儲(chǔ)到不同的磁盤(pán)空間。

針對(duì)InnoDB存儲(chǔ)引擎

對(duì)于InnoDB存儲(chǔ)引擎的表,因?yàn)閿?shù)據(jù)文件和索引文件時(shí)存放在一起的。所以無(wú)法將他們分離。當(dāng)磁盤(pán)空間出現(xiàn)不足時(shí)候,可以增加一個(gè)新的數(shù)據(jù)文件,這個(gè)文件放在有充足空間的磁盤(pán)上。具體實(shí)現(xiàn)是通過(guò)InnoDB_data_file_path中增加此文件。

innodb_data_file_path=/home/mysql/data:10000M;/user/mysql/data:10000M:autoextend 

參數(shù)修改之后,需要重啟服務(wù)器,才可以生效。

八、同一臺(tái)主機(jī)上安裝多個(gè)Mysql

除了每個(gè)Mysql安裝目錄不能相同外,還需要的是port和socket不能一樣。

mysql.sock就是客戶(hù)端連接與mysql間通信用的。socket文件,只能本機(jī)使用,遠(yuǎn)程連接要通過(guò)tcp/ip了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • mysql單字段多值分割和合并的處理方法

    mysql單字段多值分割和合并的處理方法

    這篇文章主要給大家介紹了關(guān)于mysql單字段多值分割和合并的處理方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法

    Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法

    這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • MySQL中關(guān)于case when的用法

    MySQL中關(guān)于case when的用法

    這篇文章主要介紹了MySQL中關(guān)于case when的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • php后臺(tái)經(jīng)常提示無(wú)法連接mysql 刷新后又可以訪(fǎng)問(wèn)的解決方法

    php后臺(tái)經(jīng)常提示無(wú)法連接mysql 刷新后又可以訪(fǎng)問(wèn)的解決方法

    這幾天有一臺(tái)MySQL數(shù)據(jù)庫(kù)服務(wù)器出現(xiàn)了頻繁的掉線(xiàn)情況,通過(guò)排查,并沒(méi)有排查出哪個(gè)網(wǎng)站被攻擊,百思不得其解中的時(shí)候,群里有個(gè)朋友說(shuō)是因?yàn)槲④汯B967723造成的,網(wǎng)上搜索了一下,果然很多人都是這樣的問(wèn)題,都是windows系統(tǒng)下安裝的MySQL造成的
    2011-05-05
  • MySQL order by實(shí)現(xiàn)原理分析和Filesort優(yōu)化方式

    MySQL order by實(shí)現(xiàn)原理分析和Filesort優(yōu)化方式

    這篇文章主要介紹了MySQL order by實(shí)現(xiàn)原理分析和Filesort優(yōu)化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談MySQL安裝starting the server失敗的解決辦法

    淺談MySQL安裝starting the server失敗的解決辦法

    如果電腦是不是第一次安裝MySQL,一般會(huì)出現(xiàn)報(bào)錯(cuò)情況,starting the server失敗,通常是因?yàn)樯洗伟惭b的該軟件未清除干凈,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2021-09-09
  • 如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)

    如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)

    本篇文章是對(duì)如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Mysql慢查詢(xún)優(yōu)化方法及優(yōu)化原則

    Mysql慢查詢(xún)優(yōu)化方法及優(yōu)化原則

    這篇文章主要介紹了Mysql慢查詢(xún)優(yōu)化方法及優(yōu)化原則,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • MySql忘記密碼修改方式適應(yīng)5.7以上版本

    MySql忘記密碼修改方式適應(yīng)5.7以上版本

    這篇文章主要介紹了MySql忘記密碼修改方式適應(yīng)5.7以上版本,需要的朋友可以參考下
    2017-06-06
  • MYSQL 數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出命令

    MYSQL 數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出命令

    在不同操作系統(tǒng)或MySQL版本情況下,直接拷貝文件的方法可能會(huì)有不兼容的情況發(fā)生。所以一般推薦用SQL腳本形式導(dǎo)入。下面分別介紹兩種方法。
    2010-11-11

最新評(píng)論

康保县| 闽侯县| 中方县| 延长县| 牙克石市| 东乡| 唐海县| 济阳县| 信阳市| 泾源县| 浦江县| 油尖旺区| 襄垣县| 昌图县| 永城市| 澄城县| 镇赉县| 红河县| 凤翔县| 吴忠市| 南京市| 红安县| 青海省| 富顺县| 黄平县| 呼图壁县| 葵青区| 余庆县| 璧山县| 抚顺市| 九寨沟县| 渝中区| 集安市| 九江市| 南雄市| 太白县| 大石桥市| 交口县| 双城市| 大洼县| 吴桥县|