Java.SQL.SQLException: ユーザー Root@Localhost のアクセスが拒否されました

Sheeraz Gul 2023年10月12日
Java.SQL.SQLException: ユーザー Root@Localhost のアクセスが拒否されました

このチュートリアルでは、Java で java.sql.SQLException: Access denied for user 'root'@'localhost' エラーを解決する方法を示します。

Java で java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) を修正

このエラーは、MySQL の新しいバージョンまたは以前のバージョンをアンインストールしてインストールしようとすると発生します。 エラーが発生するのは、MySQL をアンインストールするときに、MySQL アンインストーラー ウィザード が完全なクリーンアップを実行しないためです。

残りのジャンクを手動でクリーニングすると、この問題が解決します。 発生するエラーは以下です。

SQLException

このエラーを解決するには、いくつかの簡単な手順に従ってください。

  • まず、アンインストール ウィザードで MySQL サーバーをアンインストールします。
  • インストール フォルダは引き続き存在します。 フォルダからすべて削除します。 たとえば、フォルダは次のとおりです。
    C:\Program Files (x86)\MySQL
    
  • ここで、MySQL サーバーを再インストールします。

上記のプロセスにより、以前に保存されたパスワードや、このエラーの原因となったその他の情報が削除されます。

このエラーには、他にもいくつかの理由があります。 たとえば、Java と MySQL を使用してゼロから新しいデータベースを作成すると、同じエラーが発生する可能性があります。

例を参照してください:

package delftstack;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Example {
  public static void main(String[] args) throws ClassNotFoundException, SQLException {
    try {
      Connection Database_Connection = (Connection) DriverManager.getConnection(
          "jdbc:mysql://localhost/?user=root&password=rootpassword");
      Statement Demo_Statement = (Statement) Database_Connection.createStatement();
      int result = Demo_Statement.executeUpdate("CREATE New Database");
    }

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

上記のコードは同じエラーをスローします。エラーがスローされる理由は、新しいデータベースを適切に作成していないためです。 上記のコードの解決策を以下に示します。

package delftstack;

import com.mysql.jdbc.PreparedStatement;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Example {
  public static void main(String[] args) throws ClassNotFoundException, SQLException {
    try {
      Connection Database_Connection =
          DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword");
      PreparedStatement Demo_Statement =
          (PreparedStatement) Database_Connection.prepareStatement("CREATE DATABASE databasename");
      int result = Demo_Statement.executeUpdate("CREATE New Database");
    }

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

このコードは、エラーなしで新しいデータベースを正常に作成します。

著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Exception