You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse中JDBC连接MySQL报错:Access denied for user 'root'@'localhost'

问题描述

我在Eclipse Java IDE中尝试通过JDBC连接MySQL数据库时,遇到以下错误:

Error: Access denied for user 'root'@'localhost' (using password: YES)

我的DBconnection代码如下:

package language;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBconnection {
    private static String url="jdbc:mysql://localhost:3306/language";
    private static String userName="root";
    private static String passWord="rootuser";
    
    public static Connection getConnection() throws Exception{
        return DriverManager.getConnection(url,userName,passWord);
    }
}

我执行了查询语句 SELECT Host,User,plugin,authentication_string FROM mysql.user;,结果如下:

+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | chinnu           | mysql_native_password | *88FBBBF3EA3E4189FF5764256AC3B39A15CB2328                              |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | newuser          | mysql_native_password | *F071E3EB4C99F6E1F1CDD5E1031193757E974214                              |
| localhost | root             | mysql_native_password | *992C4DB09F487A275976576CCFA554F7D20A4207                              |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
解决办法
  1. 核对密码正确性
    代码中使用的密码是rootuser,但查询结果里root@localhost的密码哈希值与rootuser的哈希不匹配。

    • 先通过MySQL客户端直接登录验证:终端输入mysql -u root -p,输入你认为正确的root密码,若登录失败则说明密码错误。
    • 密码错误的话直接重置:
      ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
      FLUSH PRIVILEGES;
      
      之后把代码里的passWord替换为新密码即可。
  2. 确认目标数据库存在
    代码URL指向language数据库,执行SHOW DATABASES;查看该数据库是否存在,若不存在则先创建:

    CREATE DATABASE language;
    
  3. 检查JDBC驱动兼容性
    你的root用户使用的是mysql_native_password插件(JDBC驱动对该插件支持良好),但需确保JDBC驱动版本与MySQL服务器版本匹配,版本差距过大也可能引发连接问题。

  4. 验证数据库访问权限
    确认root@localhost拥有language数据库的访问权限,执行:

    SHOW GRANTS FOR 'root'@'localhost';
    

    若缺少权限则执行以下语句添加:

    GRANT ALL PRIVILEGES ON language.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    

内容的提问来源于stack exchange,提问作者Charan Kondaveeti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:43:22