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

“无法连接到MYSQL服务器”错误。 数据库是一个单独的服务器。 http://dpaste.com/99702/

我input“nc dbserver 3306”并返回:[XXXXXX] 3306(mysql):连接被拒绝

即使在我的GRANT选项中,我也指定了GRANT ALL TO。 %…

我的朋友说,Web服务器正在被阻止build立任何types的TCP连接到该端口。

我检查my.cnf …没有什么特别的。 难道是因为我的IPTABLES? –skip-networking选项不在my.cnf中。

谢谢

111通常是一个通用的“套接字”连接错误,即数据包永远不会在那里 。 如果没有关于如何设置防火墙的更多信息,可能是由于:

  • 错误的IP地址
  • 坏端口号(没有服务在该端口上运行)
  • 错误的路由设置(罕见,但发生)
  • 防火墙正在吸收或拒绝数据包。 这是最有可能的。

尝试连接防火墙exception,看看是否有效。 例外应该允许两台机器的IP地址之间的所有通信,所以会有两个规则 – 一个用于入口,一个用于出口。

连接被拒绝意味着它没有监听你的外部IP地址。 我知道你说过你看过你的my.cnf,但是确保你没有任何下面的行:

bind-address = 127.0.0.1 skip-networking 

如果你有绑定地址,把它改为

 bind-address = * 

如果您有跳过networking,请将其删除。

如果你做了这些事情,然后检查你的防火墙。

首先检查:尝试使用MySQL连接到PC上。

以下是我要做的检查错误来自哪里:

  1. 尝试直接连接:mysql -h 127.0.0.1 -u [username] -p [password]
  2. 尝试直接连接外部IP和MySQL计算机上的命令行:mysql -h 192.168.0.26 -u [username] -p [password]
  3. 尝试从一个不同的PC使用命令行连接:mysql -h 192.168.0.26 -u [username] -p [password]
  4. 如果一切正常,问题来自Apache服务器configuration。 否则,您将能够快速猜出问题的来源。

首先,确保您的MySQL服务器实际上正在侦听外部TCP套接字。 做一个netstat ,看看你是否得到了3306的东西,并确保它不只是127.0.0.1:3306或类似的东西。

 # netstat -untap | grep 3306 

有时,MySQL默认configuration为仅在本地套接字上侦听。 如果是这样的话,只需编辑你的my.cnf文件来侦听所有的接口。 否则,这可能是一个networking问题。