59

次のコード:

Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");

でこの例外をスローしますgetConnection():

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    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:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at db.Database.<init>(Database.java:91)
    at db.Main.main(Main.java:10)

これはどのように発生し、どうすれば解決できますか?

編集:

    public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException 
    {

        try
        {
            Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
            Statement   s = (Statement) conn.createStatement();
            int result = s.executeUpdate("CREATE DATABASE databasename");
        }


        catch ( Exception e)
        {
            e.printStackTrace();
        }
}

プロデュース:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    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:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at db.Main.main(Main.java:19)
4

28 に答える 28

59

これはあなたを助けることができます:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

コマンドラインまたはGUIツールで実行します。

%password%実際のパスワードに置き換えることを忘れないでください。

于 2012-08-12T13:23:18.930 に答える
22

これは Ubuntu 18.04 LTS および MySQL 5.x に固有です このリンクを たどった ここからすべてに従ってください:

sudo mysql_secure_installation

sudo mysql

MySQL にログインしたら、MySQL プロンプトから次のコマンドを実行します。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

テーブルにルートのパスワードがあることを確認します

SELECT user,authentication_string,plugin,host FROM mysql.user;

これで問題が解決し、ログインできるようになりました。

于 2018-09-23T04:41:30.820 に答える
21

データベースを最初から作成しているので、次を使用できます。

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
PreparedStatement ps = connection.prepareStatement("CREATE DATABASE databasename");
int result = ps.executeUpdate();

これは同じシナリオです。

于 2012-08-12T13:04:13.320 に答える
9

同様の問題がありましたが、違いは次のとおりです。 JavaApp を からlocalhostではなく、リモート PC から実行しました。これjava.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES) を解決するには、phpMyAdmin にログインして に移動し、 JavaApp を実行するホストをUsersクリックして入力します (または を選択します) 。add userAny Host

于 2015-06-20T18:16:53.940 に答える
5

以下のような同じ問題がありました

"java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)". Problem was "WRONG PASSWORD". 

クエリをそのままコピーしてシェルに貼り付け、目的の出力が得られるかどうかを確認します。小さなエラーはより多くの時間を消費します。

于 2016-09-08T20:41:49.477 に答える
2

接続先のデータベースを指定する必要があります。

jdbc:mysql://localhost:3306/mydb
于 2012-08-12T13:00:20.493 に答える
1

このようにしてみてください....

public static Connection getConnection() throws SQLException{

    String driver = "com.mysql.jdbc.Driver";
    String url    = "jdbc:mysql://localhost:3306/test";
    String username = "root";
    String password = "vicky";            // Change it to your Password
    System.setProperty(driver,"");

    return DriverManager.getConnection(url,username,password);
}
于 2012-08-12T13:00:07.913 に答える
1

私は同じ問題にぶつかっていました。mysql サービスのポート番号 (3307) を追加し、問題を解決しました。

conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password");
于 2013-07-05T11:21:18.150 に答える
1

これが問題の原因ではないかもしれませんが、2 つの MySQL サービスが同じポートで実行されている場合、同じエラーが発生します。タスク マネージャーの [サービス] タブでサービスの一覧を見て、Windows を確認できます。

于 2016-06-21T20:00:34.773 に答える
1

この例外は、mysql db と pom.xml/jar のバージョンが一致しないためにも発生します。

pom.xml/jar のバージョンが mysql db のバージョンよりも高いことを確認してください。上位バージョンは下位バージョンと互換性がありますが、逆の場合は同じではありません。

Javaプロジェクトのソリューション

  • Jar を適切なバージョンに置き換えます。

Maven ベースのソリューション

  • pom.xml で依存関係のバージョンを変更する

スプリング ブートの解決策 - 5.1.5.Final を追加して、スプリング ブートの依存関係をオーバーライドします。

于 2017-11-03T05:14:20.930 に答える
0

私も同じ問題に直面していました。私の接続文字列は有効で、ユーザー名とパスワードも有効です。ユーザーがデータベースにアクセスするのに十分な権限を持っていても。

MySQLによって作成された一時フォルダーを削除することでこの問題を解決しました(フォルダーを削除する前にバックアップを取ってください。それが機能しない場合は、そのファイルを再度配置できます)。

Windows での MySQL の一時ファイルと接続ファイルのデフォルトのフォルダーの場所は次のとおりです。

C:\ProgramData\MySQL

以下のフォルダを削除(バックアップを取った)しました:

C:\ProgramData\MySQL\MySQL サーバー\Data\sys

注:項目を削除する前に、MySQL サービスが開始されていないことを確認してください。そうしないと、ファイルの削除が許可されません。

そしてそれは私のために働きます。

于 2020-06-13T13:02:17.373 に答える
0

次の場所にポート番号 (3306 など) を追加します。

Connection c = DriverManager.getConnection("jdbc:mysql://localhost:urport","root","root");
于 2021-02-14T13:38:48.080 に答える
-1

Java を使用してローカル マシンからリモート mysql サーバーに接続している場合は、以下の手順を参照してください。エラー: 「java.sql.SQLException: ユーザー 'xxxxx'@'101.123.163.141' のアクセスが拒否されました (パスワードを使用: YES)」

リモート アクセスの場合は、cpanel か、ローカル IP アドレスのリモート アクセスを許可する他のユーザーが使用できます。

上記のエラー メッセージで、「101.123.163.141」はローカル マシンの IP です。そのため、まず Cpanel-> Remote MySQL® でリモート アクセスを許可する必要があります。次に、アプリケーションを実行して接続します。

Class.forName("com.mysql.jdbc.Driver");  
Connection con=DriverManager.getConnection(  
    "jdbc:mysql://www.xyz.com/abc","def","ghi");  
//here abc is database name, def is username and ghi        
Statement stmt=con.createStatement();  
ResultSet rs=stmt.executeQuery("select * from employee");  
    while(rs.next())  
        System.out.println(rs.getInt(1)+" "+rs.getString(2)+"  
                          "+rs.getString(3));  
con.close();    

問題が解決することを願っています。

ありがとう

于 2018-11-18T16:32:50.193 に答える