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

本文解决了一个在Windows端使用Navicat工具远程SSH连接MySQL时遇到的错误。通过修改服务器上的bind-address参数至0.0.0.0,并调整iptables防火墙规则,确保仅指定IP可访问3306端口,最终实现了安全且有效的远程连接。

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

一、问题描述:

在服务器端可以正常连接并操作mysql,但是在windows端使用navicat工具远程ssh连接就出现下面错误。

1、服务器端:

2、windows端navicat连接

 

3、原因

原来我今天在做主从配置的时候,将  /etc/my.cnf 配置文件中的bind-address参数修改成了该主机的ip(这里使用的是虚拟机,ip为192.168.0.102)【 注:原来默认的是127.0.0.1 】,这也就意味着只有ip为192.168.0.102(即自己机器ip)可以访问本地的数据库。

那是不是主从配置之后就不能再用navicat远程连接了呢,别急,当然是有办法的。

这里给出其中一种我认为比较实用的。

 

 

 

二、问题解决

 

1、将 /etc/my.cnf 中的bind-address参数修改成0.0.0.0,表示允许任何ip主机访问此数据库

 

2、但是这样可能会导致安全问题,所以我们这里还需要再添加iptables 防火墙规则

举例:我在做主从配置时,准备的是一主双从,所以防火墙规则中,也必须允许这两台机器的ip可以访问(192.168.0.104,192.168.0.106)。

直接在服务器中输入相应规则回车即可,如下图:

说明:

配置防火墙规则:允许ip 192.168.0.104,192.168.0.106,183.157.112.110 连接本服务器3306端口,其他ip不允许连接。

别忘记在最后保存一下防火墙规则。

 

命令如下:

[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

 

三、问题已解决

现在就可以继续navicat远程连接数据库了。

 

 

 

四、导致此问题的其他原因:

开启 skip-name-resolve

我本来默认的就是开启着的。如果不是我上面说的问题导致的,你可以试一试这种方法。

当您在2013年遇到 "Lost connection to MySQL server at reading initial communication packet, system error: 0" 这样的错误时,这通常意味着在尝试连接到MySQL数据库服务器时出现了问题。系统错误码0可能表明以下几个原因: 1. **网络连接问题**:可能是网络中断、防火墙阻止、IP地址或端口设置不正确导致的连接失败。 2. **MySQL服务未运行**:确保MySQL服务正在运行且没有因为某种原因(如安全更新后忘记重启)而自动停止。 3. **权限问题**:连接用户的账户可能没有足够的权限去连接到特定的数据库。 4. **服务器配置错误**:检查MySQL的配置文件(如my.cnf),确认bind-address是否允许从当前IP地址访问。 5. **客户端软件问题**:有时候,客户端工具(如MySQL Workbench或phpMyAdmin)可能存在已知的连接问题。 6. **临时数据文件损坏**:尽管罕见,但MySQL的数据文件损坏也可能导致这个错误。 为了解决这个问题,请按照以下步骤排查: 1. **检查网络**:确保您的计算机和MySQL服务器之间可以正常通信。 2. **重启MySQL服务**:在Windows上,右键点击服务 -> 重启;在Linux上,使用`sudo service mysql restart`命令。 3. **检查日志**:查看MySQL的错误日志(error.log)以获取更详细的错误信息。 4. **修改客户端连接设置**:如果必要,调整客户端的连接参数,如host, user, password等。 5. **修复或重置配置**:如有配置错误,根据提示修复配置文件。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值