2008-11-11 106 views
2

幫助!php訪問遠程數據庫

我對HOST1上的PHP(PHP 5.2.5)腳本嘗試連接到MySql數據庫HOST2。兩臺主機都位於通過CPanel控制的共享主機環境中。

HOST2設置爲允許來自HOST1的遠程數據庫連接。

我使用的PHP連接是: - $ h2 = IPADDRESS; $ dbu = DBUSER; $ dbp = DBPASS;

$DBlink = mysql_connect($h2, $dbu, $dbp); 

這總是失敗: -

Access denied for user '<dbusername>'@'***SOMESTRING***' (using password: YES) 

注:SOMESTRING看起來可能是一些做的共享主機環境。

任何想法???

順便說一句:我可以使用OpenOffice通過ODBC和SQLyog從我的筆記本電腦遠程連接到HOST2。 SQLyog和ODBC設置與PHP腳本試圖使用的完全相同。

回答

4

somestring可能是您的網絡服務器的反向查找。

你可以修改你的cPanel的權限嗎?你有沒有做過什麼來允許你的工作站(ODBC)訪問?

錯誤消息似乎表明您具有對mysql服務器的網絡訪問權限,但沒有針對來自該特定主機的用戶名的權限。

如果你被允許授予權限的數據庫,調用:

GRANT SELECT ON數據庫* TO [email protected] IDENTIFIED BY '密碼'

可能會爲工作您。我只是把它寫出來,你可能想要在mysql-docs中重新檢查語法。

+0

謝謝 - 正如您所指出的,SOMESTRING實際上是託管我的網站的實際Web服務器的反向查找。 所以我只是啓用遠程訪問,而不是我的網站的IP地址....所有的作品。 謝謝! – GreybeardTheUnready 2008-11-11 21:24:16

1

只是一些想法:

  • HOST1不必HOST2遠程訪問(共享主機不允許)
  • MySQL賬戶沒有從HOST1(在帳戶創建時指定的IP地址或通配符)訪問

編輯:

在回答您的意見,我的意思是HOST1不能獲得對HOST2 MySQL的端口。當然,Web服務將起作用,因爲80端口向公衆開放。正如另一位用戶指出,你正在得到一個迴應,所以你正在達到它。我會嘗試指定數據庫,並仔細檢查您運行的帳戶創建命令。

對於第二件,我的意思是這樣的:http://dev.mysql.com/doc/refman/5.0/en/adding-users.html

您可以指定用戶名可以從連接主機什麼。如果它未設置爲HOST2的IP或通配符,則HOST2無法使用這些憑據登錄。

+0

感謝您的想法 - HOST1可以肯定訪問HOST2,其實我可以通過簡單地建立兩者之間的米老鼠Web服務解決問題 - 但是我更願意理解爲什麼這不會工作:-) 我不不足以理解你的第二個想法。 – GreybeardTheUnready 2008-11-11 21:02:12

2
  • 您是否閱讀過Causes of Access denied Errors上的MySQL文檔?

  • 您是否聯繫了您的託管服務提供商的支持?他們應該有權訪問數據庫連接的故障排除。互聯網上的人們無法訪問。

  • 您是否需要指定數據庫名稱?您的帳戶可能只能連接到特定數據庫。 mysql_connect()函數不允許你指定數據庫,但new mysqli()呢。我不確定這是否相關 - 它可能允許您連接,但當您嘗試查詢不在數據庫中的表時,會出現錯誤。

  • 您確定您使用的密碼正確嗎?MySQL允許每個客戶主機使用不同的密碼。無可否認,這不是一種常見的配置,但它是可能的。您的託管服務提供商應該能夠告訴您。

0

錯誤消息意味着您可以聯繫mySql服務器,但您嘗試登錄的用戶無權訪問。

用戶根本沒有訪問權限,或者它有本地訪問權限,但不是來自您要連接的主機。

0

您應該嘗試使用主機名和端口,如$ h2 = IPADDRESS:3307;