2014-05-15 200 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

相關問題