SQLSTATE [HY000] [2003]无法在' XXX.XXX.XXX.XXX'上连接到MySQL服务器(60)

时间:2014-05-15 19:29:56

标签: php mysql

我正在使用远程数据库在PHP下开发Web应用程序,其中我有以下测试脚本:

try {
    $dbh = new PDO('mysql:host=XXX.XXX.XXX.XXX;dbname=db_app;', $user, $password);
    $date = ($dbh->query('SELECT NOW()');
    print_r($date);   
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
exit();

当我运行它时,我得到以下输出:

  

错误!:SQLSTATE [HY000] [2003]无法在&#39; 10.16.50.87&#39;上连接到MySQL服务器(60)

我仍然可以使用MySQL工作台和命令行界面连接到目标数据库。

this question我得到远程服务器配置&#34;可能是&#34;问题。但是,我们有一个兄弟&#34; PHP应用程序连接到同一台服务器没有问题,唯一不同的是两者是用户名和密码,甚至在我的应用程序上使用&#34;兄弟&#34; PHP应用程序凭据,显示相同的错误。所以似乎只有我的PHP似乎有问题。

我在PHP 5.5.3上运行测试,目标服务器正在运行MySQL 5.5 我的应用程序和Brother应用程序都在Staging Server A上运行,两者都应该连接到Staging Server B中的MySQL.Brother应用程序也是用PHP编写的,能够连接,但我的不是。我猜它可能是一个与MySQL相关的PHP配置。

  • 我的应用程序使用PDO,兄弟应用程序使用 mysqli

  • 兄弟应用程序在与我的应用程序相同的服务器上运行, 并连接到同一目标服务器。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

对我而言,SELinux造成了这些问题:

[root@server ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
[root@server ~]# setenforce 0
[root@server ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   permissive
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Run below as root:

setsebool -P httpd_can_network_connect=1