錯誤現(xiàn)象:
Lost?connection?to?MySQL?server?at?'reading?initial?communication?packet',?system?error:?0?
或者Lost?connection?to?MySQL?server?at?' handshake:reading?initial?communication?packet',?system?error: 2

錯誤回顧:AWS有一EC2主機A,自己搭建mysql服務器,ssh密鑰方式連接A主機沒有問題,sqlyog直連A主機的mysql 3306沒問題,其他B主機mysql直連A的3306沒問題。sqlyog用ssh方式連接A主機mysql不行,報錯,提示如上。
先是懷疑亞馬遜云上有限制,但是根據(jù)上面現(xiàn)象排除。限制也只能限制3306端口不能外連。
網上查了一圈,做如下:
1、有人說,在mysqld啟動的時候加入skip-name-resolve,配置my.cnf中有,沒用。。。
2、又有人說,需要在/etc/hosts.allow里加上mysqld:allow,這個我知道,我的沒有限制,我沒有動。
3、有人說監(jiān)聽地址不對,在配置文件中my.cnf添加 bind-address = 0.0.0.0后,問題依舊,其實不用添加,默認是ipv4和ipv6所有
一般到這,基本上能解決這個問題了,但是我沒有解決。
不服,繼續(xù)查找。
思路整理,我的ssh方式沒有問題,數(shù)據(jù)庫直接連3306端口沒有問題(暴露3306端口不安全,所以必須要用ssh方式),那也就是,ssh連接轉發(fā)mysql的tcp連接時出現(xiàn)了這個問題。
再查:
終于出來了,如果讓服務器支持sqlyog的ssh方式,sshd服務需要有一下配置:
/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AllowTcpForwarding yes??
我的配置中AllowTcpForwarding no。
no,no,no。折磨我一天。撒花 解決!
最大感想: 遇到問題直接Google,不要baidu!