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用户表信息

已尝试修改yml配置及数据库设置,但问题仍未解决,请问是否是MySQL版本导致的问题?
解决方案
这个报错核心是权限验证失败,和MySQL版本本身关联不大,优先从以下几点排查:
连接地址与用户权限匹配
从用户表截图可见,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;
- 方案一:把配置URL改成
密码有效性验证
用命令行直接测试连接,验证密码是否正确:- 测试localhost连接:
mysql -uroot -p000000 -hlocalhost - 测试127.0.0.1连接:
mysql -uroot -p000000 -h127.0.0.1
如果某条命令失败,说明对应地址的密码或权限存在问题。
- 测试localhost连接:
身份验证插件兼容
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;配置文件格式检查
确认yml配置的缩进是否正确(YAML对缩进敏感,必须用空格而非制表符),密码如果包含特殊字符需要用引号包裹(你的密码000000无此问题)。
内容的提问来源于stack exchange,提问作者Gu Peng
相关产品推荐
相关产品推荐

