【问题标题】:PHP - Can't connect to a remote MySQL databasePHP - 无法连接到远程 MySQL 数据库
【发布时间】:2014-08-26 21:21:51
【问题描述】:

我有一个 MySQL 数据库,由我在 Windows 服务器上托管,我想从远程网络服务器查询它。当我尝试使用 PHP 连接到 MySQL 数据库时(我知道,我应该使用 mysqli):

$connection = @mysql_connect("203.0.113.0:3306", "username", "password");

无论是否指定端口,长时间加载后,我都会收到此错误,并带有 2003errorno

无法连接到“203.0.113.0”上的 MySQL 服务器 (4)

这是我在托管 MySQL 服务器的服务器上的命令提示符下运行 netstat -n 时得到的结果:http://pastebin.com/pbRJNqCZ。它填满了屏幕,所以我无法复制所有内容,但我知道其他所有内容都是(我看到了几个端口,其值为 3306,即 MySQL 端口):

TCP    127.0.0.1:port        127.0.0.1:port        ESTABLISHED

当我运行netstat -a | find "LISTENING" 时,我得到:http://pastebin.com/Lqj2BrQK

这是我目前所知道的:

  • 这不是 MySQL 服务器未启动的错误,因为我可以在本地连接到它。
  • 网络服务器无法连接到 MySQL 数据库不是错误,因为我可以连接到其他数据库
  • 不是认证错误(用户名密码正确,远程服务器有权限)
  • 这不是端口转发错误,因为端口3306 在 TCP 和 UDP 上都被转发。
  • 能够连接到托管服务器的计算机不是错误,因为我可以正常 ping 它。
  • 服务器不仅在 localhost 接口上侦听。 skip-networkingbind-address 在我的 my.cnf 文件中被注释掉。

如何编辑我的连接代码或编辑我的 MySQL 服务器来修复此错误?

【问题讨论】:

  • 您确定没有防火墙问题吗?当你说端口被转发时,你为什么不连接到本地端口?
  • nmap 从远程引擎报告什么?更改配置后是否重新启动了 MySql 服务器?你检查过netstat 在服务器机器上报告的内容吗?
  • @ElliottFrisch 我很确定这不是防火墙问题,因为我还在那台机器上托管了一个 Minecraft 服务器。我试过连接到本地端口,它给出了同样的错误。
  • 我在netstat 中看不到mysqld 正在监听。 my.cnf 文件中有skip-networking 吗?这应该被评论或不存在。试试bind-address = 0.0.0.0。不排除您在错误的位置编辑 my.cnf 文件并且 mysqld 实例在启动时没有读取该文件。或者它没有读取该文件的权限。有可用的日志文件吗?
  • 我刚刚注意到,您没有列出监听服务。那是 Linux 上的 -l 开关,正如我所查找的,这可以通过 Windows 上的 netstat -a | find "LISTENING" 来实现。

标签: php mysql mysql-error-2003


【解决方案1】:

总结our discussion/chat

在my.cnf:bind-address = 0.0.0.0中绑定网络地址0.0.0.0,并确保skip-networking被注释掉或不存在。

查看netstat -a | find "LISTENING"

根据您的 pastebin,有一个服务正在侦听 3306。测试该端口是否可以从服务器本身的 NIC 地址访问。这样外部防火墙不会生效。一个简单的测试是尝试与该端口建立 telnet 连接。更详细的信息可以通过工具nmap 获取。 Nmap 已将 mysql 端口显示为已过滤。这表明本地数据包过滤器存在问题,在本例中是 Windows 防火墙。

确保将 Windows 防火墙配置为允许从所有或特定计算机对 TCP 端口 3306 进行公共访问。在公共配置文件中设置规则,或者如果两台服务器都由同一个域控制器控制,则在域配置文件中设置规则。当本地机器访问成功后,从远程 Web 服务器尝试相同的操作。

如果未能正确配置远程访问MySql端口,请考虑在两台机器之间建立SSH隧道。一旦建立,您就可以像在本地计算机上一样访问 MySql。然后端口通过隧道转发,在数据库服务器端,您可以访问本地主机环回 IP 上的服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2013-05-07
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多