SpringBoot连接MySQL报Access denied for user 'root'@'localhost'错误
问题概述
SpringBoot初学者开发基于SpringBoot的Java应用时,每次运行项目都会抛出固定异常:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES),暂不清楚问题成因,查阅大量相关技术文章后未找到有效解决方案。
已提供的排查参考材料
application.properties 配置内容
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?useSSL=false&useTimeZone=true&serverTimeZone=UTC&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=admin spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=create
运行报错截图
排查&解决步骤
按以下优先级逐一验证,每步操作后重启项目测试:
- 先修正配置格式错误
你贴的配置里spring.datasource.password=admin行尾多了1个空格,SpringBoot读取配置时会把这个空格计入密码值,直接触发密码不匹配。先删掉这个多余空格,确保该行无前后多余空白,正确写法为spring.datasource.password=admin。 - 直连MySQL验证账号有效性
打开本地终端执行命令mysql -uroot -padmin,验证账号密码是否正确:- 如果命令行同样报访问被拒绝,说明root账号的实际密码不是admin,重置root密码后同步更新配置里的password值即可
- 如果能正常登录,执行
show databases;确认是否存在springboot库,不存在就执行create database springboot;手动建库
- 校验本地访问权限
登录MySQL后执行SQLselect host,user from mysql.user where user='root';,如果结果中root对应的host没有127.0.0.1和localhost,依次执行以下SQL授权:grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'admin'; grant all privileges on *.* to 'root'@'localhost' identified by 'admin'; flush privileges; - 排除基础环境问题
确认本地MySQL服务处于启动状态,且监听端口为3306;如果使用MySQL8.x版本,确认项目引入的mysql-connector-java驱动版本为8.x系列,不要用5.x版本驱动连接8.x服务。
以上步骤操作完仍报错的话,补充提供项目pom.xml依赖配置、本地MySQL版本信息即可进一步定位。
内容的提问来源于stack exchange,提问作者usuario
相关产品推荐
相关产品推荐

