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

SpringBoot无法连接MySQL8.0,数据库访问被拒绝求助

SpringBoot连接MySQL8.0报错排查

问题详情

报错提示

访问本地数据库被拒绝

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:242) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.28.jar:8.0.28]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) [HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) [HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.4.5.jar:na]

application.yml配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 000000
    url: jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncoding=utf8&serverTimezone=CST

MySQL用户表信息

MySQL用户表信息

已尝试修改yml配置及数据库设置,但问题仍未解决,请问是否是MySQL版本导致的问题?


解决方案

这个报错核心是权限验证失败,和MySQL版本本身关联不大,优先从以下几点排查:

  1. 连接地址与用户权限匹配
    从用户表截图可见,root用户的Host字段是localhost,但你配置里用的是127.0.0.1——MySQL中localhost对应socket连接,127.0.0.1对应TCP/IP连接,二者权限是分开的。

    • 方案一:把配置URL改成jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&serverTimezone=CST
    • 方案二:给root用户授权127.0.0.1访问权限:
      GRANT ALL PRIVILEGES ON student.* TO 'root'@'127.0.0.1' IDENTIFIED BY '000000';
      FLUSH PRIVILEGES;
      
  2. 密码有效性验证
    用命令行直接测试连接,验证密码是否正确:

    • 测试localhost连接:mysql -uroot -p000000 -hlocalhost
    • 测试127.0.0.1连接:mysql -uroot -p000000 -h127.0.0.1
      如果某条命令失败,说明对应地址的密码或权限存在问题。
  3. 身份验证插件兼容
    MySQL8.0默认使用caching_sha2_password插件,虽然你用的8.0.28驱动理论上兼容,但仍可能出现适配问题。可将用户验证插件改为mysql_native_password:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '000000';
    ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '000000';
    FLUSH PRIVILEGES;
    
  4. 配置文件格式检查
    确认yml配置的缩进是否正确(YAML对缩进敏感,必须用空格而非制表符),密码如果包含特殊字符需要用引号包裹(你的密码000000无此问题)。

内容的提问来源于stack exchange,提问作者Gu Peng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:05:28