- 1、mysql5.7.12報錯如下情況導致無法連接數據庫應該怎麼辦?
- 2、連接mysql數據庫失敗怎麼辦
- 3、無法連接遠程MySQL數據庫哪,如何解決
- 4、為什麼連接mysql數據庫失敗呢?
一、mysqld 進程沒有正常運行遇到這種情況首先到服務器上看看 mysqld 進程是否活着,採用的命令:
二、客戶端不能和進程 mysqld 通信如果 MySQL 服務器上的 mysqld 進程運行正常,我們再看看客戶端能不能和 mysqld 進行通信,使用下面的命令進行網絡連通的測試:telnet localhost 3306
如果本地能通,再到客戶端的機器上把 localhost 換成 MySQL 服務器的 ip 地址進行測試。如果不能通,通常有兩種原因,一種原因是 OS 或網絡的問題,或者是防火牆;另一種原因是 mysqld 自身根本沒有偵聽客戶端的連接請求, mysqld 啟動後對於客戶端的偵聽是分三種情況。
第一種情況
是使用參數 –skip-networking 跳過偵聽客戶端的網絡連接,用下面的命令我們可以看到 MySQL 根本沒有偵聽 3306 端口。
第二種情況
使用參數 –bind-address 後面增加對客戶端訪問 IP 地址的限制,例如只偵聽本地的連接
三、賬戶密碼的問題最後一種情況是賬戶密碼的問題,應付這種情況我們有個有力的工具就是查看 MySQL 的 error log, error log 記載信息的詳細程度上由參數 –log-error-verbosity 進行控制的
1 mysql 錯誤 ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’
解決辦法:關閉防火牆,linux下命令
[root@etl01 bin]# chkconfig –list | grep -i iptables ====check fire wall
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@etl01 bin]# /sbin/service iptables stop ====stop fire wall
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: nat filter [ OK ]
Unloading iptables modules: [ OK ]
2 報錯:1130-host … is not allowed to connect to this MySql server
解決辦法:
授權形式
比如賬戶為root,密碼為root
use mysql;
用root賬戶從任何主機上訪問mysql數據庫了
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
如果你想允許用戶zz從ip為192.168.1.3的主機連接到mysql服務器,並使用123456作為密碼
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.3’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
一、連接遠程數據庫:
1、顯示密碼
如:MySQL
連接遠程數據庫(192.168.5.116),端口“3306”,用戶名為“root”,密碼“123456”
C:/mysql -h
192.168.5.116 -P 3306 -u root -p123456
2、隱藏密碼
如:MySQL 連接本地數據庫,用戶名為“root”,
C:/mysql -h
localhost -u root -p
Enter password:
二、配置mysql允許遠程鏈接
默認情況下,mysql帳號不允許從遠程登陸,只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。
一、改表法
在localhost登入mysql後,更改 “mysql” 數據庫里的 “user” 表裡的 “host”
項,將”localhost”改稱”%”
例如:
#mysql -u root
-p
Enter password:
……
mysql
mysqlupdate user
set host = ‘%’ where user = ‘root’;
mysqlselect host,
user from user;
二、授權法
例如:
你想myuser使用mypassword(密碼)從任何主機連接到mysql服務器的話。
mysqlGRANT ALL
PRIVILEGES ON *.* TO ‘myuser’@’%’IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,並使用mypassword作為密碼
mysqlGRANT ALL
PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.3’IDENTIFIED BY
‘mypassword’ WITH GRANT OPTION;
mysqlFLUSH
PRIVILEGES
使修改生效,就可以了
常見問題:
1、在採用法二授權法之後,無法在本地登錄mysql(如:#mysql -u root -p -h
192.168.5.116
Enter password:
ERROR 1045 (28000): Access denied for user
‘root’@’loadb116’ (using password: YES)
上例中loadb116是主機名.
解決方法:
1、這時可以使用:mysql -u
root -p 登錄,進入到mysql後。
mysql grant all privileges on *.* to ‘root’@’loadb116’
identified by ‘123456’ with grant option;
Query OK, 0 rows affected
(0.00 sec)
mysql flush
privileges;
Query OK, 0 rows affected (0.00
sec)
2、在本地使用ip地址登錄
#
mysql -u root -p -h
192.168.5.116
Enter password:
Welcome to the MySQL
monitor. Commands end with ; or /g.
Your MySQL connection id is 60
Server
version: 5.1.45 MySQL Community Server (GPL)
Type ‘help;’ or ‘/h’ for
help. Type ‘/c’ to clear the buffer.
mysql
在更新到 4.1.7 版本的 MySQL 後,發現需要使用 MySQLi 擴展方能正常使用數據庫,否則會出現 1251 – Client does not support authentication protocol requested by server; consider upgrading MySQL client 的提示,這個很納悶,我沒有研究具體的問題,只是切換到 MySQLi 擴展,其實在給 root 加上密碼前還是可以使用 MySQL 擴展的,可是給 root 加上密碼後就出現了上述客戶端版本太低的提示。目前已知解決方法:先用root登錄MYSQL服務器,執行原因是因為你使用的mysql服務器版本中使用了新的密碼驗證機制,這需要客戶端的版本要在4.0以上,原來的密碼函數被改為old_password();,這樣使用password()生成的密碼在舊的版本上的客戶端就不好使了,而PHP中的MYSQL客戶端都是3.23的(當然,mysqli的擴展除外),問題就在這了。
原創文章,作者:GJHJP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126924.html