2014-05-15 128 views
3

我正在PHP下开发一个Web应用程序与远程数据库,其中我有以下测试脚本:SQLSTATE [HY000] [2003]无法连接到MySQL服务器'XXX.XXX.XXX.XXX'(60)

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]无法连接到'10 MySQL服务器.16.50.87' (60)

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

this question我得到远程服务器配置“可能是”的问题。然而,我们有一个连接到同一个服务器的“兄弟”PHP应用程序没有问题,唯一的区别就是用户名和密码,甚至当使用“兄弟”PHP应用程序证书在我的应用程序上运行测试时,同样的错误被显示。所以似乎只有我的PHP似乎有问题。

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

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

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

任何帮助,将不胜感激。

+2

你写的“我仍然可以连接到使用MySQL工作台,并通过命令行界面目标数据库” - 使用完全相同的用户名和密码完全一样的系统?试图排除明显的... – Kryten

+1

*“'('SELECT NOW()')as $ row)'”* ---我没有把握什么。 –

+1

您是否检查了包含数据库服务器凭证的两个文件的编码?也许你的密码使用了一些奇特的非ASCII字符...... – CodeZombie

回答

3

对我来说,这是SELinux导致的问题。 http://www.filonov.com/2009/08/07/sqlstatehy000-2003-cant-connect-to-mysql-server-on-xxx-xxx-xxx-xxx-13/

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

我看到,这个问题已经过去几年了,selinux从来没有出现在我的脑海里,然后我作为系统管理员获得了更多的经验我承认selinux可能是这个问题的起源。 – Snivs

相关问题