[英]PHP - Can't connect to a remote MySQL database
我有一個MySQL數據庫,由我托管在Windows服務器上,我想從遠程Web服務器查詢它。 當我嘗試使用PHP連接到MySQL數據庫時(我知道,我應該使用mysqli):
$connection = @mysql_connect("203.0.113.0:3306", "username", "password");
無論是否指定端口,經過長時間的加載,我都會收到此錯誤,錯誤errorno
為2003 :
無法連接到“ 203.0.113.0”上的MySQL服務器(4)
這是在托管MySQL服務器的服務器上的命令提示符下運行netstat -n
時得到的信息: http : //pastebin.com/pbRJNqCZ 。 它填滿了屏幕,所以我無法復制所有內容,但是我知道其他所有內容(我看到了幾個端口,值為3306,這是MySQL端口):
TCP 127.0.0.1:port 127.0.0.1:port ESTABLISHED
當我運行netstat -a | find "LISTENING"
netstat -a | find "LISTENING"
我得到: http : //pastebin.com/Lqj2BrQK
到目前為止,這是我所知道的:
3306
在TCP和UDP上都被轉發。 my.cnf
文件中,注釋了skip-networking
和bind-address
。 如何編輯我的連接代碼,或編輯我的MySQL服務器以解決此錯誤?
總結我們的討論/聊天 :
在my.cnf中綁定網絡地址0.0.0.0:bind-address bind-address = 0.0.0.0
並確保已注釋掉skip-networking
或不存在skip-networking
。
檢查netstat -a | find "LISTENING"
netstat -a | find "LISTENING"
根據您的pastebin的說法,有一個服務正在監聽3306。測試服務器本身的NIC地址上的端口是否可訪問。 這樣,外部防火牆不會生效。 一個簡單的測試是嘗試通過telnet連接到該端口。 nmap
工具可以捕獲更多詳細信息。 Nmap已顯示已過濾的mysql端口。 這會導致本地數據包篩選器出現問題,在本例中為Windows防火牆。
確保將Windows防火牆配置為允許從所有或特定計算機對TCP端口3306的公共訪問。 在公共配置文件中設置規則,或者,如果兩個服務器都由同一個域控制器控制,則在域配置文件中設置規則。 從本地計算機的訪問成功后,請從遠程Web服務器嘗試相同的操作。
如果無法正確配置對MySql端口的遠程訪問,請考慮在兩台計算機之間建立SSH隧道。 一旦建立,您就可以訪問MySql,就像它在本地計算機上一樣。 然后,該端口將通過隧道轉發,並且在數據庫服務器端,您可以通過localhost環回IP訪問該服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.