2016-05-31 49 views
0

我試圖使用PHP代碼連接到遠程服務器數據庫(mysqli的)mysqli_connect():(HY000/2002)無法連接,遠程服務器

$host = 'myIP:3306'; 
$user = 'root'; 
$pass = 'pass'; 

$conn = mysqli_connect("$host", "$user", "$pass"); 

//check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Error: " . mysqli_connect_error(); 
} 

我用MYIP/phpMyAdmin來進行數據庫我用putty來檢查mysql是否正常運行。我也在我的服務器上檢查了默認的mysql端口,這是默認的(3306)。

給出的錯誤被描述爲連接失敗/超時/無響應。

我也嘗試使用PDO而不是mysqli,但它給了我相同的結果。所有其他的例子,我可以找到關於localhosts和在這些帖子中給出的解決方案的地方是使用套接字路徑來連接(這似乎不像我的解決方案,因爲它是遠程..)。

這是一個由學校提供的linux服務器。 任何想法?提前致謝。

+0

聽起來像是一些防火牆阻止了請求。 – arkascha

+0

如果您正在運行Linux,則可以向防火牆添加例外。在Ubuntu中,這是'$ ufw allow 3306'。 – Ben

+0

嘗試'telnet myIp 3306'。如果無法連接,那麼你知道有一個網絡問題。超時=防火牆默默丟棄數據包。連接被拒絕=沒有監聽到該ip:端口或防火牆主動拒絕連接。 –

回答

0

隨着mysqli_connect(),您可以使用6個參數:

host, username, password, dbname, port, socket 

主機和端口是分開的。

嘗試使用:

$conn = mysqli_connect("myIP", "$user", "$pass", "dbname", "3306"); 

此外,默認端口是3306,所以你可能甚至沒有提供它。

+0

'$ user'和'$ pass'周圍的引用是無用的。 – Jocelyn

+0

@Jocelyn正確,我剛剛從他的代碼中複製它 – wtm

相關問題