Home  >  Article  >  Java  >  Why am I getting \"Access denied for user \'root\'@\'localhost\'\" error when trying to connect to my MySQL database?

Why am I getting \"Access denied for user \'root\'@\'localhost\'\" error when trying to connect to my MySQL database?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 00:27:28962browse

Why am I getting

MySQL Connection Issue: Access Denied for User 'root'@'localhost'

The code you provided is failing to connect to the database and is throwing a SQLException with the message "Access denied for user 'root'@'localhost' (using password: YES)". This issue indicates that the specified user does not have the necessary permissions to access the database.

Causes:

This exception can occur due to the following reasons:

  • Incorrect username or password
  • Insufficient privileges for the user
  • Firewall blocking access to the database server

Solution:

To resolve this issue, try the following steps:

  1. Check your username and password: Ensure that the username and password provided to DriverManager.getConnection() are correct.
  2. Grant necessary privileges: Execute the following SQL statement to grant all privileges to the 'root' user on 'localhost':

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

    Replace %password% with the actual password of the 'root' user.

  3. Firewall settings: Check whether the firewall on your system is blocking access to the database server. If so, configure the firewall to allow connections on the port that the database server is using (typically port 3306).

Example:

You have modified your code slightly to attempt creating a database while handling exceptions:

<code class="java">public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException {
    try {
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&amp;password=rootpassword");
        Statement s = (Statement) conn.createStatement();
        int result = s.executeUpdate("CREATE DATABASE databasename");
    } catch (Exception e) {
        e.printStackTrace();
    }
}</code>

However, the same exception occurs. In this case, ensure that the 'root' user has the necessary privileges to create a database. You can grant this privilege using the following SQL statement:

GRANT CREATE DATABASE ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

By following these steps, you should be able to establish a successful connection to the database and avoid the "Access denied" exception.

The above is the detailed content of Why am I getting \"Access denied for user \'root\'@\'localhost\'\" error when trying to connect to my MySQL database?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn