我正在尝试通过 php 脚本连接到 amazon 上的 mysql 数据库,但是显示以下错误:
警告:mysql_connect() [function.mysql-connect]: 在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:111
我尝试并搜索了一些地方并做了以下事情:
- 在“/etc/mysql/my.cnf”中我注释掉了该行
bind address: 127.0.0.1
以允许所有人访问。 - 检查 /etc/hosts.allow 和 /etc/hosts.deny,确保不存在可能导致
但还是没运气。请提出其他方法。
谢谢,Madhup
答案1
您从 php 连接到 127.0.0.1 吗?
你确定在更改配置文件后重新启动了 mysql 吗?
您可以使用命令行连接到 mysql:
mysql -uroot -psomePass -h127.0.0.1
您看到 mysql 在哪个端口上监听吗?可能是非标准端口吗?
netstat -lanp|grep mysqld|grep LISTEN
你的 iptables 是否可能不允许通过环回进行连接?运行
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
答案2
这是一个MySQL 论坛帖子这应该有帮助。
答案3
如何将 mysql 绑定到 127.0.0.1 以允许所有人访问?如果您从外部服务器连接,则需要将 mysql 绑定到外部 IP 地址,以便您可以远程连接。
您可能还希望添加一些防火墙规则,例如
/sbin/iptables -A INPUT -p tcp --dport 3306 -s <php_host_ip> -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
阻止从任何其他主机访问 mysql,尽管 mysql 应该自行管理,但最好有两扇锁着的门,而不是一扇。