2012-01-10 108 views
0

我試圖連接到從Java MySQL數據庫(MySQL是在WAMP服務器託管)連接到MySQL數據庫中的Java

String userName = "root"; 
String password = "pass"; 
String url = "jdbc:mysql://localhost/dbase"; 
Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection (url, userName, password); 

的連接是正常,當我從本地主機上運行。然而,當我運行從另一臺計算機使用我的電腦的IP取代本地主機(在同一網絡內)的代碼,我得到的錯誤,

message from server: "Host '<name>' is not allowed to connect to this MySQL server" 

我曾與3306端口嘗試過。怎麼了?

+0

請參閱http://forums.mysql.com/read.php?5218966,134534,瞭解最可能的問題來源。 – Perception 2012-01-10 01:49:53

+0

我相信mysql只默認本地主機連接。您需要更改配置文件以允許本地主機之外的連接。因此,將您的IP地址添加到允許的用戶。 – Andy 2012-01-10 01:53:13

回答

5

這是數據庫端的權限問題;您需要授予用戶root從您的特定IP地址進行連接的權限。

像這樣的東西應該工作:

GRANT ALL ON foo.* TO [email protected]'1.2.3.4' IDENTIFIED BY 'PASSWORD'; 

在另一方面,我不會使用root來訪問數據庫;你應該使用一個普通的用戶帳戶。

+0

感謝您的評論。我創建了另一個用戶名管理員,並在admin上完成了Grant All。*以root @' IDENTIFIED通過'Password',現在得到這個錯誤。訪問被拒絕用戶'admin'@''(使用密碼:YES) – Ank 2012-01-10 02:00:00

+0

@Ankur:現在看起來您正在輸入錯誤的密碼?你在用什麼? – Icarus 2012-01-10 02:02:08

+0

感謝您的回覆我的用戶:通過管理員:管理員,這就是我在代碼中提到..這是沒有錯的。 – Ank 2012-01-10 02:07:12

2

您不應該使用root帳戶進行開發。要解決您的問題,可以創建一個名爲dbasedev的假想用戶。

CREATE USER 'dbasedev'@'%' IDENTIFIED BY 'passw0rd!'; 
GRANT ALL PRIVILEGES ON *.* TO 'dbasedev'@'%'; 
FLUSH PRIVILEGES; 

這將讓你與用戶ID連接到MySQL服務器:dbasedev,密碼:passw0rd!,任何主機。

這是@ Icarus的答案的補充,我無法發表評論中的所有代碼。