1. 问题背景
springboot项目,连接MySQL 8.0.*的版本
与本地之前一直使用的版本不一致,密码加密规则不一样导致的异常!
2. 配置文件以及报错信息
配置文件:
spring.datasource.dynamic.datasource.mysql-out.url=jdbc:mysql://10.0.0.100:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
spring.datasource.dynamic.datasource.mysql-out.username=root
spring.datasource.dynamic.datasource.mysql-out.password=123456
spring.datasource.dynamic.datasource.mysql-out.driver-class-name=org.mariadb.jdbc.Driver
报错信息:
Caused by: java.sql.SQLException: Access denied for user 'root'@'10.0.0.100' (using password: YES)
Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
3. 解决方式
alter user 'username'@'%' identified with mysql_native_password by 'password';
username : 想要更改用户名为 username
且允许从任何主机登录的用户的认证方式,需要替换为你想要更改的用户
password: 为新用户设置的密码。
当这个命令执行时,它会为指定的用户设置一个新的密码,并且使用 mysql_native_password
认证插件来验证这个密码。
请注意,如果你想要更改用户的密码,而不更改认证方式,你可以使用 SET PASSWORD FOR 'username'@'%' = PASSWORD('new_password')
命令