2012-06-18 153 views
1

我正嘗試使用java中的JDBC工具(使用eclipse)連接到MySQL服務器。我只是想知道如何輸入2個用戶/密碼組合。第一個是我用來連接到服務器的一個(例如,當我進入服務器)和第二個我進入phpmyadmin。到目前爲止,我只將phpmyadmin密碼放入jdbc連接屬性中,並且不會連接。這是我目前的語句:連接到MySQL服務器JDBC

conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name]", "[UserName (same as phpmyadmin)]","[Password (same as phpmyadmin)]"); 

我得到一個

java.sql.SQLException: null, message from server: "Host '[My computer's full host name]' is not allowed to connect to this MySQL server" 

,如果我需要輸入我的服務器登錄/密碼(我使用的一個對SSH)我只是想知道,以及除到phpmyadmin用戶名/密碼。我是JDBC和MySQL服務器的新手,所以我會很感激任何提示。

只是爲了後臺,我能夠通過SSH成功​​連接,我可以通過phpmyadmin登錄到服務器。

+0

您的MySQL數據庫服務器是否與客戶端在同一臺機器上運行? – Marvo

+0

不,您的服務器登錄名/密碼在這裏不起作用。 MySQL做自己的認證和授權。 – Marvo

+0

它不是在試圖連接到它的同一臺機器上運行,沒有。 – Kgrover

回答

3

當您從PHPMyAdmin登錄時,Web服務器位於承載Mysql數據庫的同一臺服務器上(在您的情況下)。默認情況下,Mysql不允許來自遠程主機的連接;只有本地機器可以訪問數據庫。

我會在黑暗中拍攝一張照片,並說您正在運行java代碼的計算機與託管mysql服務器的計算機不同。您必須配置Mysql以允許通過配置文件從遠程主機進行連接,然後更改mysql的主機行。 users表爲指定的用戶允許從您的IP地址連接(或者,如果安全不是您關心的任何IP地址)。

要配置mysql以允許來自遠程主機的連接,您必須刪除「綁定地址=「來自配置文件的行。

要允許任何主機登錄到特定的mysql用戶,您必須設置mysqlusers主機列到「%」。

這兩個都必須完成。

+0

謝謝。我會盡快嘗試,我會讓你知道(然後我會接受答案)。 – Kgrover

+0

配置文件是my.cnf,對不對? – Kgrover

+0

這是正確的。看看http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html。它沒有具體說去除bind-address =行,但這就是我遇到這個問題時所做的,並且它工作正常。 –

6

這裏是你如何創建一個可以從其他客戶機訪問您的服務器的帳戶:

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password'; 

創建該用戶,並說他可以從本地主機連接。

如果他是在機器192.168.0.5,你會做這樣的事情:

CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password'; 

那當然,你必須適當地授予權限:

GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'localhost' WITH GRANT OPTION; 
GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'192.168.0.5' WITH GRANT OPTION; 

這一直是我的反正體驗。

你可能最好讀this section on how to specify MySQL accounts

+0

今晚我不能嘗試這個,但明天早上我會告訴你。 – Kgrover

+0

這需要一些嘗試(或爲我做)。單引號是重要的,有點不直觀。下面也可能需要實施Alex的答案。 – Marvo

0
public class MysqlConnect{ 
    public static void main(String[] args) { 
    System.out.println("MySQL Connect Example."); 
    Connection conn = null; 
    String url = "jdbc:mysql://localhost:3306/"; 
    String dbName = "jdbctutorial"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = "root";`enter code here` 
    try { 
    Class.forName(driver).newInstance(); 
    conn = DriverManager.getConnection(url+dbName,userName,password); 
    System.out.println("Connected to the database"); 
    conn.close(); 
    System.out.println("Disconnected from database"); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    } 
}