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

时间:2015-01-10 18:11:52

标签: php mysql mysqli

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

警告:mysqli_connect():( HY000 / 2002):连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。在第9行和第34行的C:\ myLocalDiectory \ RemoteConn.php中;找不到资源"错误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() . ")"
      );
   }
 ?>

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

2 个答案:

答案 0 :(得分:2)

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

第一件事就是ping服务器。在DOS提示符下运行:

ping servername

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

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

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

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

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

答案 1 :(得分:-1)

define("DB_USER", "userName");

尝试使用root代替userName并定义DB_HOST