-1

サーバーの MySQL に接続しようとしていますが、同じ問題が発生し続け、同様の問題を見つけることができません。私のコードスニペットは以下の通りです:

public class MySqlDatabaseHandler {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;

    public MySqlDatabaseHandler(String url, String user, String password){
        /*String url = "jdbc:mysql://192.168.1.80:3306/testdb";
        String user = "root";
        String password = "rootpass";*/
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(url, user, password);
            st = con.createStatement();
        }
        catch (Exception e){
            e.printStackTrace();
        }  
    }
}

そして、私が受け取る結果:

java.sql.SQLException: Access denied for user 'root'@'192.168.1.3' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at handleServer.includes.classes.Server.MySqlDatabaseHandler.<init>(MySqlDatabaseHandler.java:24)

一見すると、「(パスワードの使用:NO)」のため、パスワードがサーバーに送信されることはないと思います。

URL を「jdbc:mysql://192.168.1.80:3306/testdb?user=root&password=rootpass」に変更しようとしても、同じ結果が得られました。

MySql は、テスト クライアント (192.168.1.3) へのリモート接続を許可し、telnet でテストされていますが、JDBC でこの問題が発生します。誰かが私が間違っていることを見ていますか?

4

3 に答える 3

0

MySQL の権限設定に問題があるようです。これを試して、MySQL コマンド ライン プロンプトを開いて、次のスクリプトを実行してください。

grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
flush privileges;
于 2013-02-25T02:00:43.690 に答える
0

これは、ネットワーク上の root アクセスを防ぐための意図的な制限だと思います。回避策については、この Q&Aを参照してください。基本的には @pigletfly のソリューションと同じですが、ドメイン名があります。

于 2013-02-25T02:22:18.317 に答える