[英]Remote Server SQLSTATE[HY000] [2002] Connection timed out
當使用php從運行在不同IP(例如888.888.888.888
)上的服務器連接到遠程MySQL數據庫(例如999.999.999.999
)時,出現此錯誤:
SQLSTATE [HY000] [2002]連接超時
這是我嘗試或研究的內容:
888.888.888.88
)的連接,但這沒有幫助。 localhost
更改為127.0.0.1
,但這與我無關,因為我們正在連接到遠程數據庫。 cPanel
CentOS)。 任何想法?
因為我在cPanel
上遇到了類似的問題,而找到的答案都沒有解決該問題,所以重新提出了這個問題。
解決此問題的過程分為三個步驟。 對我來說,第三點很關鍵。
1.憑證
我們假設您已經具有訪問數據庫的正確憑據。 這些可以測試:
您還可以從麻煩的原始服務器和另一台服務器上運行如下所示的php腳本。 如果只有服務器拒絕連接,則說明您沒有憑據問題。
<?php
try {
$db = new PDO('mysql:host=999.999.999.999;dbname=Database_Name_Goes_Here;charset=utf8',
'User_Goes_Here', 'Password_Goes_Here',
array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION )
);
echo "We connected.";
} catch (PDOException $e) {
print($e->getMessage());
}
?>
2.遠程訪問:允許您的IP
大多數答案都指出,在遠程服務器中,必須允許來自IP的連接。 您已經做到了。
對於其他人,如果您還使用cPanel
像OP,可以在添加IP Remote MySQL
的部分cPanel
。
3.防火牆
這是我找到的答案中缺少的要素。 畢竟,難道錯誤消息可能是正確的,即連接只是超時了嗎?
這表明您的服務器已禁用外部連接。 我調查了php.ini
中是否存在任何可能沖突的參數,然后轉向了防火牆,防火牆提供了答案。
我不知道您正在使用哪個防火牆。 這是使用csf防火牆的用戶的處理方法,這在cPanel / WHM安裝中很常見。 假設您具有SSH訪問權限,請輸入以下內容,其中IP是遠程數據庫服務器的IP:
csf -a 999.999.999.999 'allow connection to XYZ database server'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.