Centos6下MySQL遠程鏈接失敗

解決辦法

以前遇到過MySQL本地能夠鏈接可是遠程連不上的問題,沒有記錄,今天又遇到這個問題,記錄一下解決過程(MySQL版本5.5)。html

1.先將mysql服務停掉mysql

/etc/init.d/mysqld stop

2.查看mysql配置文件linux

vim /etc/my.cnf

****特別要注意****
bind_address和skip_networking
在bind_address前加個"#"進行註釋,或者改成:bind-address = 0.0.0.0 容許任意IP訪問;或者指定本身須要遠程訪問的IP地址。
bind_address必定不能爲127.0.0.1,不然只能在本地鏈接;
skip_networking必定不能出現,不然只接受unix socket而不能提供tcp socket服務;
建議把二者都註釋掉。
3.重啓mysql服務sql

/etc/init.d/mysqld start

4.對用戶受權,容許指定用戶遠程訪問,最簡單的方式是將mysql庫中user表中的對應的用戶的host設置爲%,亦即容許該用戶從任意ip遠程訪問
方法一:數據庫

use mysql;
update user set host = '%' where user = 'root';    //這個命令執行錯誤時可略過
flush privileges;
select host, user from user; //檢查‘%’ 是否插入到數據庫中

方法二:vim

grant all privileges on *.* to root@"%" identified by "password" with grant option;

第一行命令解釋以下,*.*:第一個*表明數據庫名;第二個*表明表名。
這裏的意思是全部數據庫裏的全部表都受權給用戶,若是隻是受權某數據庫或數據庫下某張表,則把*替換成你所需的數據庫名和代表便可。
root:授予root帳號。%:表示受權的用戶IP能夠指定,這裏表明任意的IP地址都能訪問MySQL數據庫。
password:分配帳號對應的密碼,這裏密碼本身替換成你的 root賬號密碼 bash

5.通常狀況下此時就能知足遠程訪問的要求,但對於某些系統還須要檢查防火牆設置,和ip訪問策略,以防系統對網絡訪問的限制形成沒法遠程訪問mysql
對於CentOS系統而言,最好檢測iptables設置。具體步驟以下:
5.1 暫停iptables服務網絡

service iptables stop

5.2 查看iptables配置文件socket

vim /etc/sysconfig/iptables

5.3 也許會看到以下內容tcp

: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

參考資料

CentOS下mysql遠程鏈接的失敗的解決方法
MySQL本地能夠鏈接,遠程鏈接不上的問題
linux配置mysql數據庫遠程鏈接失敗的解決方法

相關文章
相關標籤/搜索