2013-09-26 79 views
3

基本上,我需要連接到另一個域上的另一個數據庫。如何連接到另一個域上的MySQL數據庫?

例如,我將使用domain1和需要連接的域,並使用domain2作爲具有數據庫的域。

我曾嘗試:

mysql_connect("domain2.com.au", "user", "pass") or die(mysql_error()); 

mysql_select_db("database") or die(mysql_error()); 

雖然是拒絕工作。

我在網上尋找了相當長的一段時間來尋找解決方案,其中很多涉及登錄到我不熟悉的SSH,我想避免這種方法。


如果需要的話,這裏是我的錯誤(有些東西修改隱私):

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'user'@'host.com' (using password: YES) in /php/2012.php on line 270 
Access denied for user 'user'@'host.com' (using password: YES) 

有沒有辦法,我必須將數據庫中的改變,以允許從其他領域獲取的選項?如果是這樣,這到底是什麼?

有沒有需要連接的端口,例如domain2.com.au:3307

+3

它確實應該工作。如果他們阻止遠程MySQL連接,請與您的主機提供商聯繫。 – Brian

+2

你是自己託管這些服務器還是你有一個虛擬主機?大多數主機可能會阻止從外部IP訪問MySQL,這意味着如果沒有打開端口,您就無法做到自己想做的事情。 –

+2

**使用mysqli或PDO代替mysql_ *功能** –

回答

3

如果您使用的是託管共享,那麼它的禁用。您可以嘗試聯繫您的支持部門來啓用它,或者如果您有cPanel x3轉至MySQL部分中的遠程數據庫部分。

+1

去'遠程數據庫'和分配通配符在那裏工作完美。謝謝! – Fizzix

+1

請記住,如果您突然注意到頁面加載時間緩慢,那是因爲發送到「外部」服務器(不是本地主機)的數據庫查詢速度要慢得多。如果你有很多疑問,它可能會顯着減慢頁面。 – Andrew

1

您需要在domain2的MySQL服務器上啓用遠程訪問。

打開my.cnf文件(/etc/mysql/my.cnf對於基於Debian的Linux),並確保您刪除或註釋行:

#skip-networking 

和添加或編輯這一行:

bind-address=[YOUR SERVER's EXTERNAL IP] 

是重新啓動後,你的mysql服務。

/etc/init.d/mysql restart 

service mysql restart 

然後,你需要授予對數據庫的遠程訪問。打開MySQL控制檯:

mysql -u root –p mysql 

mysql> GRANT ALL ON [DB].* TO '[USER]'@'[IP]' IDENTIFIED BY '[PASSWORD]'; 
mysql> exit 

哪裏[DB]是數據庫,[USER]是MySQL的用戶名,[IP]是您的服務器的外部IP地址和[PASSWORD]用戶的密碼。

http://dev.mysql.com/doc/refman/5.1/en/grant.html

+0

感謝您的回覆。哪裏是「my.cnf」文件?它在'PHPMyAdmin'內嗎?我在我的Cpanel裏面。 – Fizzix

+0

另外,'PASSWORD'部分,是這個數據庫用戶的密碼嗎? – Fizzix

+0

哦,對不起,誤讀了,你不想通過SSH登錄。 但是,如果配置尚未配置爲遠程訪問,您必須這樣做。如果你有mysql root用戶訪問權限,你可以嘗試在phpmyadmin中執行查詢。 – edditor

相關問題