0

大学のセキュリティ コース用にデータベース接続スキャナーを構築しています。DriverManager.getConnection(connectionURL, username, password) を使用しましたが、正常に動作しているように見えますが、理解できない例外が 1 つあります。間違ったユーザー名を入力しても、接続が返されますか??? 私のテストコードを以下に貼り付けます。どんなポインタでも大歓迎です。間違ったパスワードを入力すると正しいエラーが返され、サーバーの電源を切るとエラーが返されます。しかし、なんらかの理由で、ユーザー名が間違っているかどうかを教えてくれません。まるでチェックしていないかのようです!

public class DBConnector {


Connection connection = null;
String dbURL = "jdbc:mysql://localhost:3306";
String userName;
String password;


public DBConnector() {
    // TODO Auto-generated constructor stub
}

public Connection tryConnection(String username, String password){
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(dbURL, username, password);

        System.out.println("Connected");

    } catch (InstantiationException e) {
        System.out.println("No Connection");
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        System.out.println("Connection Refused");
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        System.out.println("Sql Ex");
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return connection; 

}
}   

そして、これがメソッドを実行するための私のメインクラスです。

public class MainTest {

public static void main(String[] args) {

    DBConnector dbc = new DBConnector();

    dbc.tryConnection("", "");

}

}

これは、「Localhost」でテストを実行することと関係があるのでしょうか?

どうもありがとう!

4

1 に答える 1

1

匿名ユーザーとしてログインしていると思います。

次のように匿名ユーザーを削除することで、ローカルの MySQL Server インストールをより安全にすることができます (したがって、上記のコードで強制的にエラーをスローさせます)。

DELETE FROM mysql.user WHERE user='';

FLUSH PRIVILEGES;

次に、ユーザー名とパスワードなしで接続してみます。

于 2013-07-31T09:15:42.330 に答える