在'读取初始通信包'时失去与MySQL服务器的连接,系统错误:0

Rik*_*esh 115 php mysql

我收到错误:

"在读取初始通信数据包时丢失了与MySQL服务器的连接,系统错误:0"

而我要连接我的数据库.

如果我使用localhost一切正常.但是,当我使用下面的实时IP地址时,它会收到错误:

mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

Tho*_*ard 95

这里有人建议它可能是防火墙问题:

我刚遇到这个问题,发现它是我的防火墙.我使用PCTools Firewall Plus,它不允许完全访问MySQL.一旦我改变了它就没事了.希望有所帮助.

可能是吗?

另外,有人在这里表明,这可能是因为MySQL服务器绑定到环回IP(127.0.0.1 /本地主机),有效地削减你关闭从"外部"连接.

如果是这种情况,您需要将脚本上传到Web服务器(可能还运行MySQL服务器)并将您的服务器主机保留为"localhost"

  • `localhost为我解决了问题:) (24认同)
  • 你是什​​么意思?localhost?我也面临同样的问题,也只使用localhost.应用程序与数据库位于同一台计算机上.你是什​​么意思localhost? (6认同)
  • @oneofakind他的意思是连接到'localhost'而不是'127.0.0.1' (5认同)
  • 我在使用 mamp pro 的 OSX 上遇到了同样的问题。我通过禁用/重新启用 mamp pro mysql 选项卡上的“允许网络访问 mysql”复选框来修复它。 (2认同)

小智 39

打开名为my.cnf的mysql配置文件并尝试查找"bind-address",这里用你的live server ip替换设置(127.0.0.1 OR localhost)(你在mysql_connect函数中使用的ip)

这肯定会解决问题.

谢谢

  • 确保在使用 ssh 隧道时使用 bind-address = 127.0.0.1 或 localhost。bitnami 有这个问题,其中绑定地址是机器 ip。 (2认同)

sNI*_*sss 25

1)允许远程连接MySQL.编辑文件:

>sudo nano /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

评论专栏:

#bind-address       = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

重启MySQL:

>sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

2)创建用户进行远程连接.

>mysql -uroot -p

CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';

GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
Run Code Online (Sandbox Code Playgroud)

3)在我的情况下,我需要使用Ubuntu从Windows远程连接到VirtualBox机器.所以我需要在iptables中允许端口3306:

>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)


小智 15

设置新的从服务器时出现此问题.发现主服务器/etc/hosts.allow文件中缺少从属服务器IP地址.添加了IP地址,让我连接到主服务器.

请注意,我使用hosts.allowhosts.deny控制访问.


小智 7

我有这个问题,它最终成为先前的系统管理员改变了MySQL正在运行的端口.MySQL Workbench试图连接到默认的3306,但服务器在20300上运行.

  • 这个答案的好东西。事实证明,我对自己做了这件事。 (2认同)

Cle*_*ndo 6

该错误意味着它没有收到来自它期望找到服务器的端口的响应。原因范围从联系错误的机器(出于多种原因之一)到服务器不在预期的端口上。

在 /etc/mysql/my.cnf 中检查您的服务器绑定到哪个端口。这是否与您的连接语句中的内容相对应。如果它们匹配,则尝试从服务器本身和运行客户端的机器的命令行连接 mysql。如果它在一个地方而不是另一个地方工作,那么您可能有防火墙/路由器配置问题。


Ren*_*des 5

我的问题是MySQL只绑定到linux上的lo.为了解决问题我编辑了my.cnf(在/etc/mysql/my.cnf找到)删除行绑定地址= 127.0.0.1

这允许mysql绑定到任何网络接口


小智 5

我刚刚在 Windows 机器上设置了 mysql。当我尝试连接同一个盒子上的 Navicat MySql 客户端时,我收到了 OP 的错误。我必须指定 127.0.0.1 作为主机,这就完成了。

本地主机或服务器实际 IP 地址都不起作用。


小智 5

尝试使用MySQL Workbench 6.3连接到Google Cloud SQL时,我发生了这个错误.

经过一番研究后,我发现我的IP地址已被互联网提供商更改,并且他不被允许进入Cloud SQL.

我授权并重新开始工作.


Ree*_*ora 5

我遇到了同样的问题。我检查并尝试设置AllowTcpForwarding Yes,但我的sshd_config中缺少它,所以没有帮助。我没有更改sshd_config或my.cnf。确保 ssh 主机名与 mysql 主机名不同(使用 localhost)

在工作台中,选择 + 添加新连接并设置以下内容:

  • 连接方式:标准 TCP/IP over SSH
  • SSH主机名:192.168.0.50:22(替换远程SSH服务器IP和端口(可选))
  • SSH 用户名:sshuser
  • 您可以设置密码或根据提示添加
  • MYSQL 主机名:localhost 或 127.0.0.1
  • MYSQL服务器端口:3306
  • 您可以设置密码或根据提示添加

测试连接。应该会成功,然后点击“确定”。Viola!


lew*_*s4u 5

还有一个原因……

我遇到了一个 Ubuntu 服务器,那里的所有东西都是定制的,由于同样的错误而无法连接。

这个设置在里面 /etc/ssh/sshd_config

PermitTunnel no
Run Code Online (Sandbox Code Playgroud)

变成后

PermitTunnel yes
Run Code Online (Sandbox Code Playgroud)

我能够远程连接到我的 MySQL 数据库