2014-02-26 98 views
1

我想(在我的辦公室在這裏)連接我的PHP應用程序,我的數據庫是在我的家鄉,公用IP地址作爲我的mysql_connect在主機名()

mysql_connect('119.92.59.55','root','lester1992') 

,但他們不互相通信(我的辦公室終端),可能是什麼問題?

這裏是我遇到的錯誤。

mysql_connect():連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或者由於連接的主機未能響應而建立連接失敗。

在此先感謝。

+0

http://stackoverflow.com/questions/16287559/mysql-adding用戶爲遠程訪問 將有所幫助 – Girish

+2

數據庫是否可以通過公共互聯網實際訪問?端口是否打開並正確轉發?其實,人們會希望他們不是。把MySQL服務器放在公共互聯網上是一個壞主意,除非你真的知道你在做什麼並且已經非常安全地設置了所有的東西。 – deceze

+0

在mysql中,認證是基於主機的。你應該給辦公電腦許可。 – bansi

回答

1

您需要在mysql中授予訪問權限才能從遠程主機訪問。

GRANT ALL PRIVILEGES 
ON database.* 
TO 'user'@'your_office_ip_address' 
IDENTIFIED BY 'newpassword'; 
+0

如果是因爲有用戶權限,錯誤會說: – AlexKey

+3

noooo。永遠不要這麼做!在所有可用的媒體 – bansi

+0

更改'%'爲'your_office_ip_address':) – SajithNair

0

要連接到MySQL數據庫,三兩件事必須滿足:

  • 登錄
  • 密碼
  • 主機

默認情況下,root被配置爲允許從連接主機名只有localhost。您可以編輯表mysql.user並將rootHost更改爲%以允許來自任何對等方的連接。

UPDATE mysql.user SET Host = '%' WHERE User = 'root'; 

不要忘記,以使其立即生效,該更改後運行FLUSH PRIVILEGES

此外,您的防火牆和路由器必須配置爲可以連接到端口3306。您可以使用在線測試工具(如this one)來檢查您的端口3306是否可到達。

+1

如果是因爲用戶權限,錯誤會說 – AlexKey

+0

還允許root從'%'登錄是一種極好的安全性,你不這麼認爲嗎? – AlexKey

+0

它會像你的密碼一樣安全,而且實際上有兩個合理的答案,你可能想要檢查第二個。 – Havenard

0

默認情況下,mysql不允許你的用戶使用你的IP。

你想允許類似如下的命令訪問(請記住,這是非常不安全的):

GRANT ALL PRIVILEGES 
ON database.* 
TO 'root'@'119.92.59.55' 
IDENTIFIED BY 'lester1992'; 
0

如果你不想打開你的數據庫的所有IP的,那麼你應該分配權限到具體的ip。

GRANT ALL PRIVILEGES ON db.* TO 'user'@'your_office_ip' IDENTIFIED BY 'newpassword'; 

注意:您可以通過以下鏈接獲得您的辦公室IP,它會告訴你當前的IP:

http://www.whatismyip.com/

相關問題