Lost connection to MySQL server at 'reading initial communication packet', system error: 0

本文介绍了当遇到'Lost connection to MySQL server at 'reading initial communication packet', system error: 0'错误时的排查方法,包括检查服务器状态、MySQL配置文件的bind-address、访问权限、防火墙和系统负载。解决方案涉及注释bind-address、授权远程访问、禁用name-resolve、调整连接超时和监控系统资源。" 111453291,10295324,Python监控Windows进程状态脚本,"['Python', 'Windows服务', '进程管理', '数据库']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接MySQL提示:
ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
这是由于库文件初始化连接MySQL时连接失败引起的。

导致此错误的原因有:
1.服务器为正常启动的;
2.mysql设置文件中“bind-address”值的问题;
3.访问权限限制问题;
4.防火墙、杀毒软件阻拦的问题(特别是Windows);
5.负载过大、最大连接限制了访问(特别正式提供服务的mysql)

对于问题1:
判断方法:
dos中对服务器进行ping
命令: ping ip(服务器ip地址)

对于问题2:
产生原因是mysql设置文件的问题:
  在mysql数据库一些版本,为了保证安全,mysql安装后,默认只监听本机ip的“127.0.0.1”,如下:
reading_initial_communication_packet.png
  这时表现为连接“127.0.0.1”或“localhost”可以连通,连接局域网ip和公网IP无法连通。这时我们将“/etc/my.cnf”文件中的“bind-address”行前添加一个“#”号注释掉,并重启mysqld服务即可:
[mysqld]
datadir=/storage/aiezu.com/mysql
socket=/storage/aiezu.com/mysql/mysql.sock
#bind-address=127.0.0.1
  注:linux下mysql配置文件默认在“/etc/my.cnf”,Windows平台mysql配置文件在安装目录下的“my.ini”。

对于问题3访问权限的问题:
  ①、默认mysql的账户只允许本机登录的,要给账户授权通过“ip+端口”进行远程访问,需要先在mysql服务器上授权。在服务器桑登录到mysql,执行下面SQL语句授权:
use mysql;
– 将数据库"aiezu"的所有权限授权给"root"通过密码"123456"在"8.8.8.8"上进行访问;
grant all privileges on aiezu.* to ‘root’@‘8.8.8.8’ identified by ‘123456’;
– 将数据库"test"的所有权限授权给"aiezu"通过密码"123321"在任何主机上进行访问;
grant all privileges on test.* to ‘aiezu’@’%’ identified by ‘123321’;
–刷新权限表
flush privileges;

②、 在mysql客户端连接到服务端时,服务端会根据客户端的ip,尝试将客户端的ip解析为“主机名”,再通过“主机名”去检查mysql的权限表,这项功能叫“name-resolv”。由于此功能的某些原因,也会导致我们文章标题中的错误,还有就是会导致连接数据库变慢,所以需要将吃功能禁用。
禁用方法:在mysql设置文件“[mysqld]”选项组下一行“skip-name-resolve”;
[mysqld]
datadir=/storage/aiezu.com/mysql
socket=/storage/aiezu.com/mysql/mysql.sock

#bind-address=127.0.0.1
skip-name-resolve

③、如果是linux,修改“/etc/hosts.allow”文件,在文件的末尾添加下面内容,允许所有主机访问本机的“mysql”服务:
mysqld : ALL : ALLOW
mysqld-max : ALL : ALLOW

对于问题4:防火墙和杀毒软件:
  关闭杀毒软件和防火墙试试,windows方面:关闭系统防火墙,中国人常用的QQ电脑管家、360安全卫士、QQ医生、金山毒霸、卡巴斯基等;linux方便,检查iptables、ipfire系统自带防火墙的设置

对于问题5:服务过载的问题:
  ①、mysql服务过载:
执行“show processlist;”SQL命令看是否当前打开的连接过多;

使用“show variables like ‘%connect_timeout%’;”语句的设置值,改成一个稍大的值,如50:“SET GLOBAL connect_timeout = 50;”
使用“SHOW STATUS like ‘aborted_%’;”语句查询异常终止的连接和失败的连接;

②、系统过载:
使用shell命令“top”观察mysql占有的内存、cpu情况;
使用shell命令“free -h”看内存占有情况;
使用shell命令“uptime”看cpu负载情况;
使用shell命令“df -h”看磁盘空间使用率,特别占用率100%的情况;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值