“读取初始通信数据包”与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.allow
和hosts.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地址。 这必须完成设置复制。 无论如何,我通过做两件事来解决它:
-
创build一个可以用来从my.cnf文件中的绑定地址进行连接的用户
CREATE USER'username'@'bind-address'IDENTIFIED BY'password'; 授予所有特权在schemaname。*到'username'@'bind-address'; FLUSH PRIVILEGES;
-
在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默认情况下,现在只侦听本地主机,这是更兼容,并不安全。