程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL本地可以連接,遠程連接不上的問題

MySQL本地可以連接,遠程連接不上的問題

編輯:MySQL綜合教程

MySQL本地可以連接,遠程連接不上的問題


之前遇到過MySQL本地可以連接但是遠程連不上的問題,沒有記錄,今天在ucloud雲上新申請的服務器上又遇到這個問題,記錄一下解決過程。

1. 排除網絡或防火牆問題

先看是否能ping通遠程服務器,ping 192.168.1.211,如果不可以就是網絡問題。然後,檢查端口是否被防火牆擋住了,telnet 192.168.1.211 3306,如果連接失敗,配置防火牆。

配置防火牆,開啟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(重啟防火牆使配置生效)

2. 檢查MySQL配置

如果開啟了防火牆,telnet還是失敗,通過netstat查看3306的端口狀態:
netstat -apn|grep 3360
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld

注意紅色的地方,這說明3306被綁定到了本地。檢查一下my.cnf的配置,這裡可以配置綁定ip地址。
bind-address=addr
不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連接。

ps:我開啟3306端口,並且檢查MySQL配置之後,telent仍然失敗,但是在本機telnet是ok的,再三確認了配置沒有問題。後來跟我們的ucloud賬號管理員提了一下,才知道ucloud管理後台也需要開啟3306端口,用雲服務器的留意這個。

3. 檢查用戶訪問權限

MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost,那麼這個用戶就只能本機訪問, 其它機器用這個用戶帳號訪問會提示沒有權限,host改為%,表示允許所有機器訪問。
 

#mysql -u root -p
mysql> use mysql;
Database changed
mysql> update user set host=’%’ where user=’root’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0

mysql> select host,user from user;
+———–+———+
| host | user |
+———–+———+
| 127.0.0.1 | root |
| % | night |
+———–+———+
2 rows in set (0.00 sec)

最後,別忘了重啟mysql使配置生效。
# /etc/init.d/mysql restart

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved