“无法连接到 MYSQL 服务器”错误。数据库是单独的服务器。http://dpaste.com/99702/
我输入了“nc dbserver 3306”,它返回:[XXXXXX] 3306 (mysql) : 连接被拒绝
即使在我的 GRANT 选项中,我也指定了 GRANT ALL TO . %...
我的朋友说,Web 服务器被阻止与该端口建立任何类型的 TCP 连接。
我检查了 my.cnf...没什么特别的。可能是因为我的 IPTABLES?--skip-networking 选项不在 my.cnf 中。
谢谢
答案1
111 通常是通用的“套接字”连接错误,即包裹根本没到那里。如果没有关于防火墙如何设置的更多信息,则可能是由以下原因造成的:
- 错误的 IP 地址
- 错误端口号(该端口上没有运行任何服务)
- 路由设置错误(罕见,但确实会发生)
- 防火墙正在吸收或拒绝该数据包。 这是很有可能的。
尝试使用防火墙例外进行连接,看看是否可行。例外应允许两台机器的 IP 地址之间的所有流量,因此将有两条规则 - 一条用于入口,一条用于出口。
答案2
连接被拒绝意味着它没有监听您的外部 IP 地址。我知道您说您已经查看了 my.cnf,但请确保您没有以下任何一行:
bind-address = 127.0.0.1
skip-networking
如果你有绑定地址,请将其更改为
bind-address = *
如果您有 skip-networking,请将其删除。
如果您已完成这些事情,请检查您的防火墙。
答案3
首先要检查的是:尝试在 PC 上连接 MySQL。
以下是我要检查错误来源的方法:
- 尝试直接连接:mysql -h 127.0.0.1 -u [用户名] -p[密码]
- 尝试直接连接使用外部 IP并且命令行仍在 MySQL 计算机上:mysql -h 192.168.0.26 -u [用户名] -p[密码]
- 尝试从不同的 PC 使用命令行进行连接:mysql -h 192.168.0.26 -u [用户名] -p[密码]
- 如果一切正常,问题就出在 Apache 服务器配置上。否则,您很快就能猜出问题出在哪里。
答案4
首先,确保您的 MySQL 服务器确实在监听外部 TCP 套接字。执行 anetstat
并查看是否获取到包含 3306 的内容,并确保它不仅仅是 127.0.0.1:3306 或类似的本地内容。
# netstat -untap | grep 3306
有时,MySQL 默认配置为仅监听本地套接字。如果是这种情况,只需编辑 my.cnf 文件以监听所有接口。否则,这可能是网络问题。