谁能告诉我为什么我的网络服务器无法连接到数据库服务器?

谁能告诉我为什么我的网络服务器无法连接到数据库服务器?

“无法连接到 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。

以下是我要检查错误来源的方法:

  1. 尝试直接连接:mysql -h 127.0.0.1 -u [用户名] -p[密码]
  2. 尝试直接连接使用外部 IP并且命令行仍在 MySQL 计算机上:mysql -h 192.168.0.26 -u [用户名] -p[密码]
  3. 尝试从不同的 PC 使用命令行进行连接:mysql -h 192.168.0.26 -u [用户名] -p[密码]
  4. 如果一切正常,问题就出在 Apache 服务器配置上。否则,您很快就能猜出问题出在哪里。

答案4

首先,确保您的 MySQL 服务器确实在监听外部 TCP 套接字。执行 anetstat并查看是否获取到包含 3306 的内容,并确保它不仅仅是 127.0.0.1:3306 或类似的本地内容。

# netstat -untap | grep 3306

有时,MySQL 默认配置为仅监听本地套接字。如果是这种情况,只需编辑 my.cnf 文件以监听所有接口。否则,这可能是网络问题。

相关内容