2011-05-06 85 views
4

今天我已經做了一些研究,但似乎沒有解決這個問題。我最近從5.1.6升級到PHP 5.3.3,並且從5.0升級到5.5。之後,下面的代碼生成一個錯誤說「無法連接到MySQL數據庫」:PHP 5.3升級 - 無法連接到MySQL服務器

$connection = mysql_pconnect($dbhost, $dbusername, $dbpassword); 
if (!$connection) { 
    //Can't connect 
    die('Could not connect: ' . mysql_error()); 
    return; 
} 

並得到以下錯誤:

Warning: mysql_pconnect(): Can't connect to MySQL server on '199.59.157.103' (13) in /var/www/html/ws/Cust/customerWS_1_1.php on line 19 Could not connect: Can't connect to MySQL server on '199.59.157.103' (13)

我能夠通過連接到遠程主機命令行,並嘗試了從重置密碼到關閉IP表的所有內容。我有點茫然 - 所以任何幫助,將不勝感激。

回答

0

當你說「我可以通過命令行連接到遠程主機」,你的意思是說,你正在連接到MySQL服務器REMOTELY?或者你正在連接到MySQL服務器並從MySQL服務器的命令行連接到它?如果是後者,有可能在升級到MySQL 5.5時意外停止了MySQL綁定/偵聽公共IP。檢查您的my.cnf

否則:您的PHP代碼是否與您的MySQL服務器在同一臺服務器上運行?您的權限可能會關閉。如果客戶端只能訪問從'localhost'連接的訪問​​權限,那麼MySQL的權限就是通過它的IP地址連接到MySQL服務器,反之亦然。

+0

當我說的遠程連接 - 我的意思是從服務器託管我web內容我可以使用mysql -h 進行連接。如果這是MySQL沒有正確聽取的問題,它不應該允許任何遠程連接,對吧? – tdk2fe 2011-05-06 19:07:17

+0

正確。從命令行連接時,是否使用腳本嘗試使用的相同用戶名和密碼? – 2011-05-06 19:10:37

+0

是的。即使我硬編碼連接信息,我仍然收到相同的錯誤。檢查這種世俗的事情通常是我在做facepalm之前做的第一件事:) – tdk2fe 2011-05-06 19:12:16

0

首先您應該確保連接參數$dbhost,$dbusername$dbpassword是正確的。假設這些都是正確的,你應該檢查你的mysql ini設置。我會假設bind-address被設置爲127.0.0.1或localhost,但不是公共IP地址。

另請注意,如果您可以通過公共IP地址連接到MySQL,則存在安全風險。您可能想要查看不需要此類連接的解決方案。

1

有一個PHP 5.3 MySQL驅動程序限制與舊的認證方案哈希有關的數據庫存儲在以前的MySQL服務器。這可能會導致存儲的密碼出現問題,因此使用舊密碼將無法訪問數據庫。

要解決該問題,您應該使用相同的登錄名和相同的密碼重新創建mysql用戶。

2

我們與相同的錯誤消息類似的問題,「無法連接到MySQL數據庫」,也許以下幾點也將是有益的:

  • 檢查MySQL用戶權限(在本例並與外部連接,我們有舊的服務器的IP地址(允許訪問)表)GRANT ALL PRIVILEGES ON tablename.* TO 'username'@'145.1.1.2'; - >重裝後的權限變化(FLUSH PRIVILEGES;

  • 禁用SELinux的參數。在新的Plesk版本(> 10?)中,將自動啓用... - >在/ etc/SELinux的/ config中改變這行:

    SELINUX=enforcingSELINUX=disabled 見進一步的細節:http://googolflex.com/?p=482