Spring Boot连接MySQL遇Access Denied错误及配置问题求助
解决Spring Boot连接MySQL的Access Denied异常
核心错误纠正
你之前误用了Cassandra的配置项替换MySQL的数据源密码——这完全是两个不同数据库的配置体系,必须完全放弃使用spring.data.cassandra.password或spring.cassandra.password,回到spring.datasource.password来配置MySQL的密码。
逐步排查解决方案
1. 验证MySQL本地账户的密码与权限
- 打开MySQL客户端(命令行或可视化工具),执行以下命令登录,确认密码
aaaa是否正确:
若登录失败,说明密码错误,需重置root用户密码。mysql -u root -p - 登录MySQL后,执行以下语句确认root用户拥有
localhost访问权限:
若结果中没有SELECT user, host FROM mysql.user WHERE user = 'root';root@localhost记录,执行以下命令添加权限:CREATE USER 'root'@'localhost' IDENTIFIED BY 'aaaa'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
2. 修正数据源URL格式问题
你的spring.datasource.url中?后存在多余空格,会导致参数解析异常,需修改为:
spring.datasource.url=jdbc:mysql://localhost:3306/Thogakade?createDatabaseIfNotExist=true
若使用MySQL 8.0+版本,建议添加时区参数避免时区报错:
spring.datasource.url=jdbc:mysql://localhost:3306/Thogakade?createDatabaseIfNotExist=true&serverTimezone=UTC
3. 确认pom.xml中的MySQL驱动依赖正确
- MySQL 8.x版本依赖:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> - MySQL 5.x版本依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> <scope>runtime</scope> </dependency>
4. 清理无效配置,确保配置文件正确
确保配置文件中仅保留MySQL相关配置,示例如下:
spring.datasource.url=jdbc:mysql://localhost:3306/Thogakade?createDatabaseIfNotExist=true&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=aaaa spring.jpa.show-sql=true spring.jpa.generate-ddl=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect <!-- MySQL8.x使用该方言 -->
5. 清理缓存与重启应用
- 执行
mvn clean(Maven项目)或./gradlew clean(Gradle项目)清理编译缓存 - 重启IDE与应用,避免配置文件被缓存或其他环境配置覆盖
衍生问题说明
替换为Cassandra配置项后出现using password: NO错误,是因为Spring Boot无法读取到MySQL的密码参数,回到正确的spring.datasource.password配置即可解决该问题。
内容的提问来源于stack exchange,提问作者Imesh Isuranga
相关产品推荐
相关产品推荐

