HOWTO · Java

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' エラーを解決する方法を示します。

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();
    }
  }
}

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