日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

连接MySQL数据库时常见故障问题的分析与解决

發布時間:2023/12/2 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 连接MySQL数据库时常见故障问题的分析与解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

連接MySQL數據庫時常見故障問題的分析與解決

?

初學的mysql網友好象經常會碰到mysql無法連接的錯誤。特開貼收集這樣問題的現象和原因。?

先自己扔塊磚頭出來。?

歸納如下:

故障現象 : 無法連接 mysql?
=============================================================================

錯誤信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES) 錯誤信息2? :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)? ? 下面,首先分析說明這兩種錯誤信息分別在什么情況下會出現: ? 描述:使用mysql連接命令或連接工具,對遠程數據庫進行連接時,可能會出現以上兩種錯誤信息,下面以命令的連接方式進行說明。 ? 當使用mysql里連接命令時,若帶-p參數且指明密碼,或帶-p參數不指明密碼,但在下一步輸入密碼時有字符串輸入,則返回的是 “錯誤信息1”,若不帶-p參數,或帶-p參數但在下一步輸入密碼時,不輸入任何字符,則返回的是“錯誤信息2”,如下所示: ?

C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot??? //帶-p參數,并指明密碼
ERROR 1045 (28000): Access denied for user
'root'@'192.168.8.123' (using password: YES)

?

C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p?? ?//帶-p參數,在下一步進行密碼輸入
Enter password:???? //有字符串輸入
ERROR 1045 (28000): Access denied for user
'root'@'192.168.8.123' (using password: YES)

?

C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88??? //不帶-p參數
ERROR 1045 (28000): Access denied for user
'root'@'192.168.8.123' (using password: NO)

?

C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p?? //帶-p參數,在下一步進行密碼輸入
Enter password:?? ?//無字符串輸入
ERROR 1045 (28000): Access denied for user
'root'@'192.168.8.123' (using password: NO)

?

上面的對比可總結出一點,使用mysql命令進行登錄時,若有密碼輸入行為并輸入了字符,則驗證出錯后,則返回的錯誤提示中,對于 (using password: ?)中?的關鍵字,則返回的是YES,若沒有密碼輸入行為,或無密碼字符輸入,則返回的是NO。

?

除上面的實驗對比,還進行了如下的登錄對比操作,并記錄了他們所返回錯誤提示類型,對上面的總結進行驗證:

?

1.使用存在的用戶,不輸入密碼

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)

2.使用不存在的用戶,不輸入密碼

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)

3.使用存在的用戶,且輸入密碼正確

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)

4.使用存在的用戶,但輸入密碼不正確

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)

5.使用不存在的用戶,但輸入數據庫中存在的某一個密碼

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)

6.使用不存在的用戶,且輸入數據庫中不存在的一個密碼

ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)

?

總結:對于 ERROR 1045 (28000): Access denied for user'root'@'192.168.8.123'? 此類錯誤返回時, (using password: ?)中?的

關鍵字是YES還是NO,關鍵不在于用戶是否存在,密碼是否正確,它的結果取決于登錄時,用戶對于密碼有沒有字符串的輸入,如果沒有,MySQL數據庫驗證后,若出錯返回此類信息,則應是 (using password: NO),若用戶對密碼有字符串的輸入,返回的則是

(using password: YES)。

?

下面分析這類 ERROR 1045 (28000): Access denied for user'usera'@'localhost'? 錯誤出現的原因:


原因1 : 客戶端遠程訪問的用戶賬號并未創建


檢查 :

以管理員ROOT登錄后,show grants for 'user'@’IP‘; 或者 select user from mysql.user; 確認用戶賬號是否存在。

mysql> show grants for 'jtsec'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123'
mysql>

返回信息:ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123' 說明,沒有jtsec用戶,或者沒有對jtsec用戶進行在192.168.8.123遠程訪問的授權。 ? mysql> select user,host from mysql.user;
+-------+---------------+
| user? | host????????? |
+-------+---------------+
| root? | localhost???? |
+-------+---------------+
1?rows in set (0.00 sec)

mysql>

關于user記錄數只有一條,是root,并沒有jtsec相關的記錄,說明沒有數據庫中沒有jtsec這個帳號。

?

處理 :創建用戶賬號。

mysql>? grant all privileges on *.* to 'jtsec'@'192.168.8.123' identified by 'jtsec' with grant option;
Query OK, 0 rows affected (0.00 sec)

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

mysql> show grants for 'jtsec'@'192.168.8.123';
+---------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for
jtsec@192.168.8.123????????????????????????????????????????????????????????????????????????????????????????????????????????????? |
+---------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO
'jtsec'@'192.168.8.123' IDENTIFIED BY PASSWORD '*0B4AB716B6BE11F89101577836F3016D8EEAA217' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select user,host from mysql.user;
+-------+---------------+
| user? | host????????? |
+-------+---------------+
| jtsec | 192.168.8.157 |
| root? | localhost???? |
+-------+---------------+
2?rows in set (0.00 sec)

mysql>

?

原因2 : 用戶賬號存在,但未對其所在的客戶端的IP進行遠程訪問授權允許
?
檢查 : 以管理員ROOT登錄后 show grants for 'user'@'IP'; ? mysql> show grants for 'root'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123'
mysql>

返回信息:ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123' 說明,沒有root用戶(因為是MySQL超級用戶所以排除此種可能),或者沒有對root用戶進行在192.168.8.123遠程訪問的授權。 ? 我們來對比一下看,root用戶本地訪問的權限,則可查出: mysql> show grants for 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for
root@localhost????????????????????????????????????????????????????????????????????????????????????????????????????????????? |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO
'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
? 或者直接查詢mysql的user用戶表select user,host from mysql.user;,其中記錄了每一個用戶的權限信息 mysql> select user,host from mysql.user;
+-------+---------------+
| user? | host????????? |
+-------+---------------+
| root? | localhost???? |
+-------+---------------+
1?rows in set (0.00 sec)

mysql>

關于user值為root的記錄數只有一條,且host值為localhost,說明root用戶只能在本地訪問數據庫。


處理 :進行root用戶的遠程訪問授權,可以授權到指定的客戶端IP,也可以授權為所有IP都可訪問(host值為%)。

授權為所有IP都使用用戶root,密碼root,來遠程訪問數據庫

mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

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

?

再次進行授權的查詢

mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for
root@%????????????????????????????????????????????????????????????????????????????????????????????????????????????? |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO
'root'@'%' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
? 再次查詢授權表記錄 mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user? | host????????? | password????????????????????????????????? |
+-------+---------------+-------------------------------------------+
| root? | localhost???? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root? | %???????????? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------+---------------+-------------------------------------------+
2?rows in set (0.00 sec)
mysql>
? ? 原因3 : 用戶賬號授權訪問的密碼不正確 ? 檢查 :以管理員ROOT登錄后, select user,host,password ?from mysql.user; mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user? | host????????? | password????????????????????????????????? |
+-------+---------------+-------------------------------------------+
| root? | localhost???? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root? | %???????????? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
|?jtsec | 192.168.8.123 |?????????????????????????????????????????? |
| jtsec | 192.168.8.123 | *0B4AB716B6BE11F89101577836F3016D8EEAA217 |
+-------+---------------+-------------------------------------------+
4?rows in set (0.00 sec)
mysql>
根據查詢結果可以看出來,root賬戶的本地訪問和遠程訪問密碼一樣。
而jtse賬戶在192.168.8.123這個IP上,遠程訪問數據庫的密碼有兩個,其中一個為空(第三條記錄)。 也就是說在IP為192.168.8.123的客戶機上,使用jtsec這個賬戶遠程訪問數據庫,合法的密碼有兩個可以選擇: 一個是不輸入密碼(密碼為空),另一個是*0B4AB716B6BE11F89101577836F3016D8EEAA217(經過加密的), 其余的輸入,都是錯的。
處理 :使用正確的訪問密碼進行訪問即可。 ? =================================================================================== 錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065) 原因? :MySQL服務器上防火墻的阻斷 檢查 :在Linux下查看iptables規則,看是否未對MySQL數據庫默認通信端口3306進行放行 ? 處理 : 添加相應的放行規則 自己在?? /etc/sysconfig/iptables? 里加了一下代碼:
??? -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

或嘗試關掉防火墻

??? chkconfig ip6tables off
??? chkconfig iptables off

?

問題描述: ?C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)
C:\Documents and Settings\Administrator> ? ===================================================================================
錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)
原因 : mysqld數據庫服務沒有啟動。
檢查 :在windows 的任務管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。確認服務已經啟動。
處理 :啟動mysqld 服務
===================================================================================
錯誤信息 :ERROR 1130: Host xx.xx.xx.xx is not allowed to connect to this MySQL server?
原因 : mysql服務器沒有賦予此客戶端遠程連接的權限。?
檢查 :在mysql服務器本地查詢mysql庫里user表對應的host是否包含客戶端機器的IP(%為不限制IP允許遠程連接)。?
處理 :修改mysql庫下的user表:update user set host = '%' where user ='XXX';flush privileges;
===================================================================================
錯誤信息 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
原因 : 用戶賬號并未創建,遠程登錄時登錄指令未直接包含密碼項
檢查 :以管理員ROOT登錄后,show grants for 'usera'@'localhost'; 或者 select user from mysql.user; 確認用戶賬號是否存在。
處理 :創建用戶賬號。
===================================================================================
錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)?
原因 : mysqld 客戶端與服務端端口不一致。?
檢查 :在my.ini 設置下服務端口 這種情況特別是客戶都與遠程服務器端口不一致 很容易出現的問題
處理 :啟動mysqld 服務?
===================================================================================
錯誤信息 :ERROR 2002 (HY000): Can't connect to local MySQL server server through socket '/var/lib/mysql/mysql.sock'(111)?
原因 : mysqld的mysql.sock沒在相應的位置。
處理 :
? 1.先查看/etc/rc.d/init.d/mysql status 看看是否啟動
? 2.改權限 chown -R mysql:msyql /var/lib/mysql
? 3.修改/etc/my.cnf (注意:先停數據庫)
? [mysqld]
? datadir=/usr/local/mysql/data
? socket=/var/lib/mysql/mysql.sock
? [mysql.server]
? user=mysql
? basedir=/usr/local/mysql
? [client]
? socker=/var/lib/mysql/mysql.sock
? 4.啟動數據庫
===================================================================================


常用檢查步驟。

1. PING hostname 或 PING 189.xx.xx.xx 確認服務器IP層通信沒有問題。如果PING通則繼續(2),PING不通則找網絡方面專家協助。
2. TELNET hostname 3306 確認服務器TCP層通信沒有問題。(你的端口號可能不是3306),如通則繼續,如不通,請檢查mysqld 是否已經在運行,防火墻屏蔽了端口。
3. 檢查用戶權限, show grants ... 或 select user,host,password from mysql.user;

?

===================================================================================
故障現象 : 本地無法 mysql -u root -p 用原來的密碼登錄,但可以用無密碼,遠程必須用原密碼登錄 ?
錯誤信息 :ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
原因 : 未知,不知道是否mysql的新密碼控制策略
檢查 :mysql -u root 密碼空登錄無問,遠程用navica mysql無密碼有問題,有密碼無問題
處理 :暫時先把本地登錄的密碼去掉
版本環境:mysql Ver 14.14 Distrib 5.1.56, for debian-linux-gnu (i486) using readline 6.2
? 問題分析(lioncode):Start --> MySQL數據庫的用戶信息均保存在mysql.user表中,其中包括用戶的用戶名,密碼,授權的范圍(可授權登錄的IP、可進行的數據庫操作的類型)等信息, 有必要查看一下該表中對于root用戶的相關記錄項,對于上述現象對應的查詢結果可能是這樣的: ? 出問題前該表中的數據如果是這樣的: mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user? | host????????? | password????????????????????????????????? |
+-------+---------------+-------------------------------------------+
| root? | localhost???? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root? | %???????????? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------+---------------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
出問題后該表中的數據可能是這樣的: mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user? | host????????? | password????????????????????????????????? |
+-------+---------------+-------------------------------------------+
| root? | localhost???? |?????????????????????????????????????????? |
| root? | %???????????? | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------+---------------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
第一條數據,解釋了,為什么在本地無法用原來的密碼登錄,但卻可以用無密碼登錄成功。 原本,本地登錄的密碼和遠程登錄的密碼是一樣的,都為*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B (加密后的), 但是,由于某種原因,本地登錄的密碼被清空了,所以用原來的密碼就不能登錄了。 ? 第二條數據,解釋了,為什么遠程必須用原密碼登錄。 root用戶本地登錄密碼的設定和root用戶遠程登錄密碼的設定,分別是兩條不同的數據,所以本地登錄的密碼被改,并不影響遠程登錄的密碼。 <-- End
==================================================================================
故障現象 : 無法連接 mysql windows
錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)?
原因 : 同時開啟大量的tcp端口和而僅有一小部分短命端口時,當他們處于time_wait時期,mysql可能會跑錯端口
檢查 :在windows 默認會開啟5000個臨時端口供調用,而他們的生命僅僅是120s,意思是在關閉端口的時候會有120秒的延時
處理 :減少不不必要的tcp端口。
修改注冊表

==================================================================================

?
求助,不知道大家有一樣的情況沒有?

? Lost connectiion to MySQL server during query.
按照網上說的方法仍沒解決,樓主是否碰見過?

?

?==================================================================================

?

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

什么問題??

?

?

?

Author: lioncode
CMP: JTSEC-RD
Date: 2012-08-28 18:14
Project: jtsec_one-way_dbsync
Version: v1.0.0

總結

以上是生活随笔為你收集整理的连接MySQL数据库时常见故障问题的分析与解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。