2012-04-19 65 views
2

我無法連接到通過netbeans託管在Linux服務器上的MySQL服務器。從netbeans/java連接到Linux服務器上的mySQL服務器時遇到問題

當通過MySQL Workbench「通過ssh獲得標準TCP/IP」連接時,所有這些證書都可以工作。

這裏是我的代碼:

public class Database { 
private static final String DRIVER = "com.mysql.jdbc.Driver"; 
private static final String URL = "jdbc:mysql://john.myschool.edu:3306/cs3610"; 
private static final String USERNAME = "mbrooke"; 
private static final String PASSWORD = "mypass"; 
private Connection connection; 

public Database() throws Exception{ 
    try{ 
     connect(); 
    }catch(SQLException e){ 
     if(connection !=null){ 
      connection.close(); 
     } 
    } 
} 

//Open connection to database 
private void connect() throws Exception{ 
    connection = null; 
    Class.forName (DRIVER).newInstance(); 
    connection = DriverManager.getConnection(URL,USERNAME,PASSWORD); 

} 

}

我上啓動該行獲得與#521的SQLException「連接= DriverManager的......」,我不知道是什麼原因造成這個問題。司機似乎被正確安裝爲,通過步進的時候,我讓它過去「的Class.forName(d ...」沒有例外拋出線。

+2

一些服務器內置IP控制。您可以與您的託管服務商討,以確定是否允許任何IP連接數據庫。 – markAnthopins 2012-04-19 19:22:09

+0

我可以從同一臺計算機上的MySQLWorkbench連接到服務器。如果通過NetBeans,我會擁有不同的IP嗎? – 2012-04-19 22:41:09

回答

2

聽起來您的數據庫服務器沒有打開端口3306,或者您的MySQL憑據不允許使用遠程連接。

MySQL Workbench的TCP/IP over SSH設置首先打開與SSH服務器的SSH連接,然後連接到數據庫服務器(通常爲localhost127.0.0.1)。所以MySQL連接實際上是從SSH服務器啓動的。因此,通過該通道進行連接的能力僅表明,如果您的java代碼正在您正在使用的服務器上運行,則您的java代碼將工作。但是,當您嘗試從另一臺機器運行代碼時,您仍可能遇到防火牆或MySQL權限問題。

我會嘗試下載一個MySQL客戶端到您的機器,看看您是否可以使用該方法連接:mysql -h myDatabaseServer.school.edu cs3610 -u mbrooke -p'mypass',看看是否有效。您可能會得到「連接不可用」錯誤或「用戶mbrooke沒有遠程訪問權限」,這應該讓您瞭解您面臨的問題。

1

嘗試沒有結束斜線

URL =「 JDBC:MySQL的://john.myschool.edu:3306/cs3610 /「;

URL = 」JDBC:MySQL的://john.myschool.edu:3306/cs3610「;

或者您有一個名爲「cs3610 /」的數據庫

+0

我試過了,得到了同樣的異常。 – 2012-04-19 22:43:03