mysql遠端連線失敗的解決方案(CentOS版)
(1)先將mysql服務停掉
# /etc/init.d/mysqld stop
(2)查看mysql設定檔
# vi /etc/my.cnf
特別要留意其中的兩項:bind_address和skip_networking,bind_address一定不能為127.0.0.1,否則只能在本地串連,skip_networking一定不能出現,否則只接受unix socket而不能提供tcp socket服務,建議將bind_address和skip_networking直接都注釋掉。
(3)重啟mysql服務
# /etc/init.d/mysqld start
(4)對使用者授權,允許指定使用者遠端存取,最簡單的方式是將mysql庫中user表中的對應的使用者的host設定為%,亦即允許該使用者從任意ip遠端存取
# mysql -u root -ppassword //進入mysql控制台
# mysql>use mysql;
# mysql>update user set host = '%' where user = 'root'; //這個命令執行錯誤時可略過
# mysql>flush privileges;
# mysql>select host, user from user; //檢查‘%’ 是否插入到資料庫中
#mysql>quit
(5)一般情況下此時就能滿足遠端存取的要求,但對於某些系統還需要檢查防火牆設定,和ip存取原則,以防系統對網路訪問的限制造成無法遠端存取mysql
對於CentOS系統而言,最好檢測iptables設定。具體步驟如下
5.1 暫停iptables服務
# service iptables stop
5.2 查看iptables設定檔
# vi /etc/sysconfig/iptables
5.3 也許會看到如下內容
:OUTPUT ACCEPT [1009120:257185920]
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
#-A INPUT -s 118.144.89.18 -p tcp -m tcp --dport 3306 -j ACCEPT
#-A INPUT -s 123.127.177.239 -p tcp -m tcp --dport 3306 -j ACCEPT
建議直接開放3306連接埠,而不是僅限定某個ip才可以訪問3306
5.4 重啟iptables服務
# service iptables start
僅作記錄,以備不時只需。