最近在開發一個項目時,遇到了MySQL連接到遠程服務器失敗的問題。
$ mysql -u root -p -h 10.10.10.10 Enter password: ******** ERROR 2003 (HY000): Can't connect to MySQL server on '10.10.10.10' (110)
經過一番排查,發現了以下原因:
1. MySQL服務沒有啟動
當然,服務器上也可能存在其他進程和服務和MySQL占用同一個端口,導致端口被占用,MySQL服務無法正常啟動。
2. 防火墻問題
在遠程服務器的防火墻中可能沒有開啟3306端口(或MySQL設定的端口),導致無法連接。
3. 用戶權限問題
MySQL服務可能限制了遠程連接的用戶權限,需要在MySQL服務器上進行設置。
解決方法:
1. 確認MySQL服務已經啟動,并排查是否存在端口占用問題。
$ ps aux | grep mysql $ netstat -anp | grep mysql
2. 確認防火墻中已經打開MySQL的端口。
$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent $ sudo firewall-cmd --reload
3. 如果是用戶權限問題,請在MySQL服務器上進行如下操作,開啟遠程連接權限:
$ mysql -u root -p Enter password: ******** mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; mysql>exit;
通過上述方法,我順利解決了MySQL連接到遠程服務器失敗的問題。