在使用遠程服務器的時候,經常會遇到MySQL遠程登陸不上的問題,我最開始也被坑了一天,所以我把這些問題解決方法整理一下。
首先,我們需要確認服務器的防火牆是否屏蔽了3306這個端口(這是mysql遠程連接的默認端口)
iptables -L -n
然後就可以看到防火牆規則列表
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1080
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:31337
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:31337
如上圖所示,這裏我的3306端口是打開了的,ACCEPT,如果是DROP那就說明防火牆關閉了3306端口,這時就需要刪除這條規則
iptables -D INPUT 3 //刪除第三行的規則
如果你不是第三行填上指定的行數即可,做完之後保存規則表iptables-save
下一步,增加遠程登錄的用戶(不建議使用root用戶)
登錄mysql
mysql -u root -p
輸入密碼登錄,執行以下命令
exit;
這裏是爲base數據庫增加了一個遠程用戶,可以在任意地方登錄,擁有base數據庫的所有權限
以上,具體權限之類的可以自己去探索,這裏就不多做解釋了
http://blog.csdn.net/w2180z/article/details/52956694