Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
一、問題描述:
在服務(wù)器端可以正常連接并操作mysql,但是在windows端使用navicat工具遠(yuǎn)程ssh連接就出現(xiàn)下面錯誤。
1、服務(wù)器端:
2、windows端navicat連接
?
3、原因
原來我今天在做主從配置的時候,將? /etc/my.cnf 配置文件中的bind-address參數(shù)修改成了該主機(jī)的ip(這里使用的是虛擬機(jī),ip為192.168.0.102)【 注:原來默認(rèn)的是127.0.0.1 】,這也就意味著只有ip為192.168.0.102(即自己機(jī)器ip)可以訪問本地的數(shù)據(jù)庫。
那是不是主從配置之后就不能再用navicat遠(yuǎn)程連接了呢,別急,當(dāng)然是有辦法的。
這里給出其中一種我認(rèn)為比較實(shí)用的。
?
?
?
二、問題解決
?
1、將 /etc/my.cnf 中的bind-address參數(shù)修改成0.0.0.0,表示允許任何ip主機(jī)訪問此數(shù)據(jù)庫
?
2、但是這樣可能會導(dǎo)致安全問題,所以我們這里還需要再添加iptables 防火墻規(guī)則
舉例:我在做主從配置時,準(zhǔn)備的是一主雙從,所以防火墻規(guī)則中,也必須允許這兩臺機(jī)器的ip可以訪問(192.168.0.104,192.168.0.106)。
直接在服務(wù)器中輸入相應(yīng)規(guī)則回車即可,如下圖:
說明:
配置防火墻規(guī)則:允許ip 192.168.0.104,192.168.0.106,183.157.112.110 連接本服務(wù)器3306端口,其他ip不允許連接。
別忘記在最后保存一下防火墻規(guī)則。
?
命令如下:
[root@localhost ~]# iptables -A INPUT -p tcp -s 192.168.0.104 --dport 3306 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 192.168.0.106 --dport 3306 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 183.157.112.110 --dport 3306 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP
[root@localhost ~]# service iptables save
?
三、問題已解決
現(xiàn)在就可以繼續(xù)navicat遠(yuǎn)程連接數(shù)據(jù)庫了。
?
?
?
四、導(dǎo)致此問題的其他原因:
開啟 skip-name-resolve
我本來默認(rèn)的就是開啟著的。如果不是我上面說的問題導(dǎo)致的,你可以試一試這種方法。
總結(jié)
以上是生活随笔為你收集整理的Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试中get和post的区别
- 下一篇: Mysql实现主从复制(一主双从)