SpringBoot连接MySQL报Access denied for user 'root'@'localhost'如何解决
SpringBoot MySQL连接Access denied异常解决方案
1. 修正YAML配置解析问题
YAML对纯数字值、缩进敏感度高,优先调整配置:
- 所有配置层级保持2个空格缩进,禁止使用Tab缩进
- 纯数字密码添加单/双引号包裹,避免YAML自动解析为数字类型导致校验不匹配
修改后的配置参考:
spring: datasource: username: root password: "011575" url: jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true driver-class-name: com.mysql.cj.jdbc.Driver
- 同时排查项目中是否存在
application.properties、其他激活profile的配置文件,避免数据源参数被覆盖。
2. 校准MySQL root用户权限
登录本地MySQL命令行工具,执行以下SQL查询root用户允许的登录主机:
SELECT user,host FROM mysql.user WHERE user = 'root';
- 若查询结果无
root@localhost记录,仅存在root@127.0.0.1,直接将配置URL中的localhost替换为127.0.0.1即可 - 若需要保留
localhost登录权限,执行以下SQL授权并刷新权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '011575'; FLUSH PRIVILEGES;
3. 校验环境匹配性
- 确认MySQL服务实际监听端口为3306,若已修改默认端口,同步更新URL中的端口值
- 检查项目依赖中mysql-connector-java版本与本地MySQL大版本兼容:MySQL 8.0+必须使用8.0.x版本的连接器,MySQL 5.7.x可使用5.1.x或8.0.x版本连接器
内容的提问来源于stack exchange,提问作者Douko
相关产品推荐
相关产品推荐

