2012-10-16 77 views
1

可能重複:
Connecting to remote MySQL server using PHP連接到MySQL上的其他IP(服務器),PHP

我可以使用本地主機成功連接到數據庫,而代碼是在服務器上,其中MySQL是。

我想連接到同一個MySQL服務器,而是從另一個IP:

mysql_connect("localhost","root","<password>"); 
mysql_select_db("db name"); 

但說我的新的IP是12.123.123.12

我想:

mysql_connect("12.123.123.12","root","<password>"); 
mysql_select_db("db name"); 

什麼我做錯了嗎?

+0

爲什麼你認爲你做錯了什麼?請不要回復「因爲它不起作用」 – zerkms

+0

「但是說我的新IP是12.123.123.12」---你的mysql服務器ip是什麼? – zerkms

+0

我試着用echo mysql_ping()來ping連接。並沒有正確連接。還說,沒有選擇數據庫。 –

回答

0

如果它不工作,你可以嘗試顯示錯誤

mysql_connect("12.123.123.12","root","<password>") or die("Error: ".mysql_error()); 

注:主機名不一定是你的IP地址;它是mysqlserver的IP地址或名稱

與mysqlserver替換它,它會工作

+0

這是之後的錯誤,不能連接到'108.166.79.24'(111) –

+0

上的MySQL服務器所以然後我試圖讓IP,12.123.123.12/phpmyadmin /這是我登錄到phpmyadmin,並出現錯誤是不同的。未知的MySQL服務器主機'108.166.79.24/phpmyadmin /'(11) –

+0

我認爲你沒有這樣做的權利。爲什麼不用你更換ip正確的mysqlserver ip地址。這不一定是你的網站的ip地址,如果你使用的是託管公司,他們通常會提供這些信息給你 – Ibu

3
SELECT User, Host, Password FROM mysql.user; 

樣本輸出:

+------+--------------------+----------+ 
| User | Host    | Password | 
+------+--------------------+----------+ 
| root | localhost   |   | 
| root | myhost.example.com |   | 
| root | 127.0.0.1   |   | 
| root | ::1    |   | 
|  | localhost   |   | 
|  | myhost.example.com |   | 
+------+--------------------+----------+ 

你會看到,根只允許從登錄localhost默認情況下。你將不得不改變,以允許你現在指定的主機創建一個不同的帳戶(推薦)。使用root是很危險的。

根據需要使用足夠的權限創建新用戶。

Reference

+0

使用'root' for * anything *很危險 – zerkms

+0

重新措辭...... :) –

+0

我看到了,你如何改變用戶? –

0

首先,你需要確保你在查詢呼應MySQL錯誤:

mysql_connect("12.123.123.12","root","<password>") or die(mysql_error()); 

檢查MySQL服務器給用戶的權限從遠程連接主辦。這就是你通常會授予特權:如果數據庫需要從遠程主機訪問

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'localhost' IDENTIFIED BY 'thepassword'; 

,以下特權聲明必須從MySQL服務器設置:

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'<yourip>' IDENTIFIED BY 'thepassword'; 
-- grant privilege to all remote hosts 
GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'%' IDENTIFIED BY 'thepassword'; 

如果您具有MySQL服務器的管理權限,您可以通過在命令檢查的特權:

SHOW GRANTS; 

順便說一句:mysql_ *功能已被棄用。只使用mysqli_ *函數。

1

大多數託管服務提供商(至少使用CPANEL的服務提供商)不允許跨域查詢。如果您的主機使用CPANEL,則必須轉到「數據庫」 - >「遠程MySQL」,並從運行查詢的服務器添加IP地址。

如果您的主機不使用CPANEL,請將主機的IP地址(12.123.123.12)添加到MySql的用戶表中。

出於安全原因,最後一條評論是一個很好的習慣,當您發佈問題時,請不要使用敏感信息作爲IP地址! Registers Luis