2

NetBeans を介して Linux サーバーでホストされている MySQL サーバーに接続できません。

これらの資格情報はすべて、MySQL Workbench "Standard TCP/IP through ssh" 経由で接続するときに機能します。

これが私のコードです:

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);

}

}

"connection = DriverManager..." で始まる行で #521 の SQLException が発生していますが、この問題の原因がわかりません。ステップスルーすると、例外がスローされずに「Class.forName(D ...」行を通過するため、ドライバーは正しくインストールされているようです。

4

2 に答える 2

2

データベース サーバーでポート 3306 が開いていないか、MySQL 資格情報でリモート接続の使用が許可されていないようです。

MySQL Workbench のTCP/IP over SSH設定は、最初に SSH サーバーへの SSH 接続を開き、次にデータベース サーバーに接続します (多くの場合localhostまたは127.0.0.1)。そのため、MySQL 接続は実際には SSH サーバーから開始されます。したがって、そのチャネルを介して接続する機能は、SSH 接続しているサーバー上で Java コードが実行されている場合にJava コードが機能することを示すだけです。ただし、別のマシンからコードを実行しようとすると、ファイアウォールまたは MySQL のアクセス許可の問題が引き続き発生する可能性があります。

MySQL クライアントをマシンにダウンロードして、その方法を使用して接続できるかどうかを確認mysql -h myDatabaseServer.school.edu cs3610 -u mbrooke -p'mypass'します。それが機能するかどうかを確認します。「接続が利用できません」というエラーまたは「ユーザー mbrooke にリモートでアクセスする権限がありません」というエラーが表示される可能性があり、直面している問題についての洞察が得られるはずです。

于 2012-04-19T23:28:29.373 に答える
1

スラッシュを終了せずに試してください

URL = "jdbc:mysql://john.myschool.edu:3306/cs3610/";

お気に入り

URL = "jdbc:mysql://john.myschool.edu:3306/cs3610";

または、「cs3610/」という名前のデータベースがあります

于 2012-04-19T21:52:06.097 に答える