“读取初始通信数据包”与MySQL服务器失去连接,系统错误:0

我收到错误:

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

而我要连接我的分贝。

如果我使用本地主机,一切工作正常。 但是,当我使用我的实时IP地址,如下所示,这是错误的:

mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error()); 

有人在这里: http : //forums.mysql.com/read.php?52,166244,258515#msg-258515表明,这可能是一个防火墙的问题:

我刚刚有这个问题,发现这是我的防火墙。 我使用PCTools Firewall Plus,并且不允许完全访问MySQL。 一旦我改变了,那很好。 希望有所帮助。

那可以吗?

另外,在这里: http ://forums.mysql.com/read.php?52151255,213970#msg-213970build议,这可能是因为MySQL服务器绑定到环回IP(127.0.0.1 /本地主机)有效地切断你从“外部”连接。

如果是这种情况,你需要将脚本上传到networking服务器(这可能也在运行MySQL服务器),并保持你的服务器为“本地主机”

打开名为my.cnf的mysqlconfiguration文件,并尝试find“bind-address”,这里用你的实时服务器ip(你在mysql_connect函数中使用的ip)replace设置(127.0.0.1或localhost)

这肯定会解决问题。

谢谢

有这个问题时,build立一个新的奴隶服务器。 发现它是主服务器/etc/hosts.allow文件中的从服务器IP地址丢失。 添加了IP地址,它让我连接到主服务器。

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

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

 >sudo nano /etc/mysql/my.cnf 

评论专栏:

 #bind-address = 127.0.0.1 

重新启动MySQL:

 >sudo service mysql restart 

2)创build用户进行远程连接。

 >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'@'%'; 

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

 >iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT 

我有这个问题,它结束了以前的系统pipe理员改变了MySQL运行的端口。 MySQL Workbench试图连接到默认的3306,但服务器在20300上运行。

在我的情况下,问题是MySQL只绑定到Linux上的LO。 为了解决我编辑my.cnf(在/etc/mysql/my.cnf处find)的问题,删除了bind-address = 127.0.0.1这一行

这允许mysql绑定到任何networking接口

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

经过一番研究,我发现我的IP地址已经被互联网提供商所改变,他不允许在云端SQL。

我授权并回去工作。

我的问题是DNS查询被子网内的FW阻塞。 解决scheme是禁用MySQL中的DNS查找。

我只是在一个窗口框中设置MySQL。 当试图在同一个盒子上与Navicat MySql客户端连接时,我得到了OP的错误。 我必须指定127.0.0.1作为主机,并得到它。

localhost或服务器的实际IP地址都不起作用。

这个错误意味着它没有收到它所期望的服务器端口的响应。 原因包括联系错误的机器(由于多种原因之一)到服务器不在预期的端口上。

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

从MySQL工作台连接时遇到了同样的错误。 这是我如何修复它。 我的/etc/my.cnfconfiguration文件将绑定地址值设置为服务器的IP地址。 这必须完成设置复制。 无论如何,我通过做两件事来解决它:

  1. 创build一个可以用来从my.cnf文件中的绑定地址进行连接的用户

    CREATE USER'username'@'bind-address'IDENTIFIED BY'password'; 授予所有特权在schemaname。*到'username'@'bind-address'; FLUSH PRIVILEGES;

  2. 在MySQL工作台中更改连接详细信息中的MySQL主机名值以匹配绑定地址

在我的情况下,我有hosts.deny ALL:ALL。 更改为ALL:PARANOID通过ssh连接解决了我的问题

问题对我来说很愚蠢。

我曾经在AWS EC2 Ubuntu机器上得到同样的问题(MariaDB暂时安装在本地),所以我试图做SSH隧道,并有同样的问题。 所以我试着通过terminalssh隧道:

 ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem 

它告诉我:

请以用户“ubuntu”而不是用户“root”的身份login。

我将ssh用户从根目录更改为ubuntu,就像我的sshconfiguration一样,并且连接好了。

所以检查你的SSH连接用户。

我监督这一点,所以这也是我半个小时的时间,所以我希望这对你有用。

碰到同样的问题, 绑定地址来回无济于事。 对我来说,解决scheme是冲洗特权

 mysql> FLUSH PRIVILEGES; 

对我来说,在mysql/my.cnf设置bind-address = 0.0.0.0就行了。 它基本上听所有的地址(但仍然是一个端口),然后。

别忘了重启你的服务器: systemctl restart mysql

当远程连接到Mysql时,我得到了错误。 我在/var/log/mysqld.log有这个警告:

 [Warning] IP address 'XXXX' could not be resolved: Temporary failure in name resolution 

我只是将这一行添加到/etc/hosts文件中:

 XXXX some_name 

问题解决了! 连接到MySQL时,不使用skip-name-resolve在本地应用程序中导致一些错误。

我有同样的问题。 要解决它,我只是把主机从localhost:3306改为localhost。 所以错误可能会在您将不正确的端口设置为连接时出现。 默认情况下最好。

数据库目录读写权限也是我发现的一个问题。 只要确保您的应用程序能够在数据库位置rw文件。 尝试chmod 777进行testing。

我已经完成了3个步骤,然后为我工作。

 1) bind-address = "YOUR MACHINE IP" in my.cnf file at /etc/my.cnf 2) Restart service by command : service httpd restart 3) GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION; 

Apache防火墙阻止IP地址。 所以给予访问,使用这些命令:

firewall-cmd –permanent –zone = trusted –add-source = YOUR_IP / 32

firewall-cmd –permanent –zone = trusted –add-port = 3306 / tcp

firewall-cmd –reload

我只是有同样的问题,但在我的情况下,我解决了它

服务mysqld启动

对于我的configuration文件被发现“/etc/mysql/mysql.conf.d/mysqld.cnf”注释掉绑定地址做了伎俩。

正如我们在这里可以看到的那样: 而不是跳过networking默认情况下,现在只侦听本地主机,这是更兼容,并不安全。