2015-10-17 245 views
0

我有一個運行在我的服務器上的PHP應用程序及其MySQL數據庫,數據庫包含安全密鑰。遠程MySQL連接超時

站點A遠程連接到應用程序MySQL數據庫以獲取安全密鑰並且沒有問題。 但是,站點B返回MySQL連接超時錯誤。

所以基本上一個外部服務器連接到數據庫沒有問題,但其他時間了。它是兩臺服務器上完全相同的腳本,並且兩臺外部服務器都在cPanel中列出。兩臺服務器都有60秒的php.ini中設置的mysql連接超時值相同,站點B在大約5秒後返回超時錯誤。

任何想法可能會造成這種情況?

+0

您是否已根據https://rtcamp.com/tutorials/mysql/remote-access/ – Peter

+0

授予站點B對數據庫的訪問權限?好吧,因爲我沒有爲站點A執行此操作,並且它工作正常,爲什麼站點B需要它嗎? – Daryl

回答

1

默認情況下,的cPanel不允許遠程連接到數據庫的保護, 你應該添加兩個遠程服務器IP在允許遠程連接列表,在db網站的cPanel,或允許所有IP的連接(添加%只)

另一件事,如果你在服務器B上有一個CSF(ConfigServer安全&防火牆)可能會阻止連接,那麼你需要確認MySQL端口3306允許(您需要爲根級別,或要求服務器管理員)。

+0

是的,我已經在cPanel中使用了通配符%。問題是它沒有顯示錯誤,如無法連接或錯誤的信息,只是連接超時,這是相同的錯誤,如果我將服務器地址更改爲一些隨機組成的URL或DNS,它幾乎就像服務器可以不能連接任何東西。 – Daryl

+0

防火牆阻止端口連接也會導致連接超時,您需要允許該端口或要求服務器管理員這樣做。 你可以通過嘗試遠程連接到服務器B數據庫來確認,它也應該讓你超時 – Lion4H

0

如果您在服務器B上有Telnet訪問,則telnet到MySQL並查看是否可以獲得響應。

此外,請檢查站點B是否配置爲使用與站點A相同的MySQL端口。您可能希望在腳本中明確指定它,以便覆蓋已配置的默認值。

Lion4H也提出了一些非常好的信息。很可能是防火牆問題。

0

阻塞端口會導致超時。您可以通過以下命令複製它,並從要連接的服務器中執行:

telnet hostname_or_ip 3306 

查看響應數據。沒有反應?阻止。

其次:確保服務器的ip被mysql列入白名單。