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

SpringBoot连接MySQL报错:root@localhost访问被拒及方言问题

SpringBoot连接MySQL权限错误及连锁问题解决

核心问题定位

初始错误java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)是启动失败的根源,后续Hibernate方言无法确定等问题均为连接失败引发的连锁反应,优先解决数据库权限及连接配置问题。

1. 验证并修复MySQL用户权限

  • 打开终端,登录MySQL控制台:
    mysql -u root -p
    
    输入密码1234,若登录失败,说明密码或用户权限存在问题。
  • 查询root用户的主机授权记录:
    SELECT user, host FROM mysql.user WHERE user = 'root';
    
    若host列不是localhost或%,执行以下命令更新权限:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
    FLUSH PRIVILEGES;
    
  • 为root用户授予目标数据库的全部权限:
    GRANT ALL PRIVILEGES ON springbootdatabase.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    

2. 检查SpringBoot连接配置

确保application.properties(或application.yml)中的数据库配置完全正确,示例配置如下:

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdatabase?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Hibernate配置(显式指定方言避免自动识别失败)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
  • 注意:如果MySQL端口不是默认的3306,需同步修改url中的端口;serverTimezone必须设置,否则会触发时区错误;allowPublicKeyRetrieval=true可解决部分环境下的连接认证问题。

3. 确认MySQL服务状态

打开Windows服务管理器(快捷键Win+R输入services.msc),找到MySQL服务(通常名为MySQL80或对应版本),确保服务处于运行状态,若未启动则右键启动。

4. 排查密码输入错误

检查配置文件中spring.datasource.password是否为1234,避免存在空格、大小写错误或特殊字符转义问题。

5. 解决Hibernate方言问题

当数据库连接成功后,Hibernate会自动识别数据库方言,若仍有问题,可通过配置文件中spring.jpa.properties.hibernate.dialect显式指定对应版本的方言(如MySQL8.x用org.hibernate.dialect.MySQL8Dialect)。

内容的提问来源于stack exchange,提问作者KDPK Kasthurisinghe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:16:05