为什么我的 php 代码没有连接到我的远程 MySql 数据库?

Why is my php code not connecting to my remote MySql database?

我正在尝试连接到远程 MySql 数据库,但收到此错误消息:

警告:mysqli_connect(): (HY000/2002): 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机失败回复。在 C:\myLocalDiectory\RemoteConn.php 第 9 行 "Resource not found" 错误 404.

这是我正在尝试使用的 php 文件:

 <?php
     define("DB_SERVER", "serverName");
     define("DB_USER", "userName");
     define("DB_PASS", "password");
     define("DB_NAME", "dbName");


    $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

     if(mysqli_connect_errno()) {
            die("Database connection failed: " . 
            mysqli_connect_error() . 
             " (" . mysqli_connect_errno() . ")"
      );
   }
 ?>

我错过了什么吗?感谢您的帮助!

define("DB_USER", "userName");

尝试 root 而不是 userName 并定义 DB_HOST.

我要检查的第一件事(如果您还没有这样做的话)是您实际上可以从 运行 是您的 PHP 脚本的计算机连接到数据库。这可以排除网络或防火墙问题。

第一件事是对服务器执行 ping 操作。在 DOS 提示符下 运行:

ping servername

其中 "servername" 与您在上面的 PHP 脚本中输入的字符串相同。如果这没有回复类似于下面的字符串,具体来说,第一个单词不是 "Reply":

Reply from 192.168.239.132: bytes=32 time=101ms TTL=124

这意味着执行 PHP 脚本的计算机 运行 与 mysql 服务器之间很可能没有连接。然后我会检查服务器和计算机是否正确连接到网络,服务器是否启动,以及您的计算机 运行 宁 PHP 脚本或服务器上是否没有防火墙。

现在,如果您上面的测试显示 "Reply" 到 ping,您可以测试是否可以从 php 服务器连接到 Mysql 服务。为此,您可以使用 Mysql workbench (http://dev.mysql.com/downloads/workbench/) 并从那里创建与您提供给脚本的数据库参数的连接。如果您无法与 Mysql workbench 连接,您可能需要禁用 Mysql 服务器中的防火墙、计算机 运行ning PHP 中的防火墙,或者启用 Mysql 服务器以接受您在 PHP 脚本中使用的数据库和用户名的远程连接(某些发行版 Mysql 服务器安装为仅接受本地连接以确保安全)。

如果问题是服务器权限问题(例如用户只能在本地连接而不能从远程计算机连接),您可以使用 GRANT 命令在 Mysql 服务器中启用权限:http://dev.mysql.com/doc/refman/5.1/en/grant.html