MySQL报错Lost connection to MySQL server at ‘reading initial communication packet’的解决办法

马谦马谦马谦 2020年2月29日19:09:49 发表评论

使用mysql连接远程服务器时报错,在百度和google查找都没有找到能解决问题的办法:

分析应该是以下两个原因导致的:

  1. 服务器有防火墙,禁止3306端口的访问。
  2. 用户没有授权远程访问。

第二个错误首先被排除掉了,根据多年的经验来看,如果是没有权限报错应该是Access Deny或者Permission相关的错误,但是这个错误从没见过。

因此排查的重心就放在了防火墙上了,首先在服务端查看防火墙,防火墙是关闭的状态,并且3306端口允许所有主机访问:

MySQL报错Lost connection to MySQL server at 'reading initial communication packet'的解决办法

说明不是第一种场景导致的。那么问题来了,这到底是个什么奇葩错误?没办法,只能上终极大招了——抓包。

使用tcpdump抓包:

然后放到本地用wireshark打开,一个明显的错误就映在眼前了:

MySQL报错Lost connection to MySQL server at 'reading initial communication packet'的解决办法

1130,没有权限访问,说明还是用户没有权限访问服务器导致:

MySQL报错Lost connection to MySQL server at 'reading initial communication packet'的解决办法

气到吐血!不知道为什么没有权限客户端是这种鬼错误,直接打印服务端返回来的错误不就行了吗?wtf!

这是一台内网的虚拟机设备,root用户没有开外网访问权限,很久没有使用了不记得了。

解决办法

给root权限加上外网访问权限:

本文共执行62次查询,耗时0.346秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: