1. 程式人生 > >解決mysql伺服器3306埠不能遠端連線

解決mysql伺服器3306埠不能遠端連線

問題:本機可以通過3306埠連線mysql伺服器,但遠端不行。

1、網路檢測

 1)ping主機可以;
 2)telnet 主機3306埠不可以;
   telnet 主機22埠可以;
   說明與本機網路沒有關係;

2、埠檢測

1)netstat -ntpl |grep 3306
    tcp        0      0 :::3306                     :::*                        LISTEN      - 
2)netstat -ntpl |grep 22
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -   
  可以看出22埠監聽所有地址,而3306只監聽本機地址(綁定了到了本地),所以遠端無法訪問。
  對於埠只允許本機訪問,有兩個地方啟用,一個是防火牆啟用3306,一個就是mysql配置繫結本機地址。

參考:http://blog.csdn.net/fjssharpsword/article/details/50973283

3、防火牆檢測

 1)iptables --list檢視;
 2)開啟防火牆3306埠
     vi /etc/sysconfig/iptables
     -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306埠通過防火牆) 
     /etc/init.d/iptables restart(重啟防火牆使配置生效)
 3)或者直接關閉防火牆;

4、mysql配置檔案檢查

檢查my.cnf的配置,bind-address=addr可以配置繫結ip地址。
不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連線。
#ps -aux | grep mysql  檢視程序ID是3340
#ll /proc/3340 檢視程序程式情況,找配置檔案或者#which mysql 找程式路徑

5、mysql使用者訪問許可權

 進入mysql資料庫
   $mysql -u root -p
   >use mysql;
   >select host,user from user;
    MySQL建使用者的時候會指定一個host,預設是127.0.0.1/localhost只能本機訪問;
    其它機器用這個使用者帳號訪問會提示沒有許可權,host改為%,表示允許所有機器訪問。