错误现象:

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

ssh方式连接mysql 错误


错误回顾:AWS有一EC2主机A,自己搭建mysql服务器,ssh密钥方式连接A主机没有问题,sqlyog直连A主机的mysql 3306没问题,其他B主机mysql直连A的3306没问题。sqlyog用ssh方式连接A主机mysql不行,报错,提示如上。


先是怀疑亚马逊云上有限制,但是根据上面现象排除。限制也只能限制3306端口不能外连。

网上查了一圈,做如下:

1、有人说,在mysqld启动的时候加入skip-name-resolve,配置my.cnf中有,没用。。。

2、又有人说,需要在/etc/hosts.allow里加上mysqld:allow,这个我知道,我的没有限制,我没有动。

3、有人说监听地址不对,在配置文件中my.cnf添加 bind-address = 0.0.0.0后,问题依旧,其实不用添加,默认是ipv4和ipv6所有

一般到这,基本上能解决这个问题了,但是我没有解决。

不服,继续查找。

思路整理,我的ssh方式没有问题,数据库直接连3306端口没有问题(暴露3306端口不安全,所以必须要用ssh方式),那也就是,ssh连接转发mysql的tcp连接时出现了这个问题。


再查:

终于出来了,如果让服务器支持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!

文章来源于互联网:sqlyog ssh方式连接mysql报错’reading initial communication packet’

发表评论