我想用PDO連接到外部數據庫。PDO不能和端口一起工作
$dbh = new PDO('mysql:host=hotsname;port=3309;dbname=dbname', 'root', 'root');
但是,這不適用於我有一臺特定的服務器。
我想也許只有某個主機被允許,但我檢查了mysql規則,並且在我個人和連接工作的服務器上嘗試了這些代碼。
所以我知道代碼的作品,他們的是我並沒有什麼塊和防火牆正在接受請求到端口3309,並將其傳遞到正確的服務器端口3306
所以,問題是單靠一臺服務器。作爲測試,我認爲我會打開端口3306來測試代碼而不指定端口。
$dbh = new PDO('mysql:host=hotsname;dbname=dbname', 'root', 'root');
這工作馬上。
所以我的問題是,爲什麼添加端口時,這會導致它無法連接到數據庫。只有這個特定的服務器存在這個問題。
很多感謝您的時間。
更新
給出的錯誤簡直是 「無法連接到MySQL服務器上xxx.xxx.xxx.xxx」。
我現在已經稍微進一步了。代碼現在正在工作提供我有一個防火牆規則,允許傳入3306到服務器使用3306.所以,即使我已指定一個端口,它似乎忽略這一點,並迫使它走出3306.
是否有可能*客戶端*機器阻止端口3309上有*出站*防火牆規則? –
它做什麼而不是工作(它產生了什麼錯誤)?連接用戶是否有權從連接主機遠程連接? MySQL正在偵聽TCP連接(my.cnf中未啓用'skip-networking') –
@MichaelBerkowski我更新了我的問題。另外'skip-networking'被禁用。連接用戶具有我已經證明的權限,在其他服務器上成功使用相同的代碼以及檢查mysql表並確保允許的主機是通配符'%'。它似乎好像我有麻煩的服務器只是完全忽略端口,只使用3306.它是一個與cpanel託管的服務器。 –