記錄一下Linux下遠(yuǎn)程訪問Mysql連接不上,報(bào)錯(cuò)The driver has not received any packets from the server.
問題所在
遠(yuǎn)程服務(wù)器已經(jīng)提前安裝好了MySQL,版本也是對(duì)應(yīng)的。在ssh上可以正常進(jìn)入MySQL數(shù)據(jù)庫(kù)。但是其他地方無(wú)法連接上,例如navicat和IDE內(nèi)部都發(fā)生報(bào)錯(cuò)。
排查
1. 首先排查了一下遠(yuǎn)程服務(wù)器上mysql服務(wù)狀態(tài)是否處于正常運(yùn)行狀態(tài)
sudo service mysqld status

沒有發(fā)生問題。
2. 檢查了一下服務(wù)器安全組是否放行了對(duì)應(yīng)端口。如3306、80等常用端口
檢查安全組進(jìn)入對(duì)應(yīng)所選用的服務(wù)器控制臺(tái)即可。(騰訊云、阿里云、華為云、AWS)都是類似的。
也沒有發(fā)生問題。
3. 檢查了linux中防火墻是否啟用,是否放行了對(duì)應(yīng)端口
Centos7默認(rèn)使用的是firewalld作為防火墻,不是使用iptables,因此需要先關(guān)閉firewalld服務(wù),或者直接使用默認(rèn)的firewalld防火墻。
-
使用iptables需要先安裝服務(wù)
yum install iptables-services -
我們可以將其設(shè)置為開機(jī)啟動(dòng)
systemctl enable iptables.service -
關(guān)閉firewalld防火墻
systemctl stop firewalldsystemctl mask firewalld
接下來(lái)就是關(guān)鍵點(diǎn),我們需要放行對(duì)應(yīng)的端口
- 放行
3306端口:iptables -A INPUT -p tcp --dport 3306 -j ACCEPT - 放行
443端口:iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 放行
80端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
... 其他的端口也是類似

問題解決!!!
firewalld常用命令
-
查看firewalld防火墻狀態(tài)
systemctl status firewalld.service -
開啟firewalld防火墻
systemctl start firewalld.service -
關(guān)閉firewalld防火墻
systemctl stop firewalld.service -
重啟firewalld防火墻
systemctl restart firewalld.service -
禁止開機(jī)啟動(dòng)firewalld防火墻
systemctl disable firewalld.service -
設(shè)置開機(jī)啟動(dòng)firewalld防火墻
systemctl enable firewalld.service -
開放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent -
重新載入
firewall-cmd --reload -
查看對(duì)應(yīng)端口
firewall-cmd --zone=public --query-port=80/tcp -
刪除對(duì)應(yīng)端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

浙公網(wǎng)安備 33010602011771號(hào)