0

データベースへの接続をテストしようとしていますが、次のエラーが発生し続けます

java.sql.SQLException: Access denied for user 'db'@'localhost' (using password: YES)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3700)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1203)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ConnectingToDB.main(ConnectingToDB.java:18)

私のコードは以下です。「conn = DriverManager.getConnection(url+dbName,userName,password);」という行でエラーが発生します。

public class ConnectingToDB
{
  public static void main(String[] args) 
  {
    System.out.println("MySQL Connect Example.");
    Connection conn = null;
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "steven";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "db"; 
    String password = "db";
    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();
   }
 }

}

4

3 に答える 3

2

資格情報が MySql によって処理されているにもかかわらず拒否されていることがわかるように、資格情報が間違っている場合はエラーが異なり、拒否されるため、問題が資格情報に直接関係していない可能性があることを意味します。資格情報が拒否された場合、問題は主に次のものに関連しています。

  1. 権限の問題 - 解決策 >> 「Localhost」から「db」を使用する権限を付与する
  2. 接続文字列は問題ないように見えますが、文字列のエンコードによりこのエラーが発生することがあります
  3. インストールされているコンポーネントの一部がMySqlに干渉しています -> コンポーネントのインストールを確認してください

上記の手順を 1 つずつトラブルシューティングしてみてください。

于 2012-05-20T17:52:19.503 に答える
0

mysql にdb@localhostが存在するかどうかを確認する必要があります。それ以外の場合は、必要な権限を持つこのユーザー プロファイルを作成します。

CREATE USER user_specification
    [, user_specification] ...

user_specification:
    user [IDENTIFIED BY [PASSWORD] 'password']

詳細については、CREATE USER 構文を確認してください。

于 2012-05-20T17:08:47.457 に答える
0

LOCALHOST と「マシン名」は MySQL と同じではありません。localhost に接続できることをコマンド ラインから確認します。

mysql -hlocalhost -udb -pdb steven

失敗した場合は、適切な権限でこれを接続して実行します。

create user db@localhost identified by 'db';
grant select on steven.* to db@localhost;
于 2012-05-20T18:41:24.697 に答える