SpringBoot连接MySQL8.0及以上版本的问题

异常描述:

Error creating bean with name 'jdbcConverter' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Unsatisfied dependency expressed through method 'jdbcConverter' parameter 4; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdbcDialect' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

异常原因:

MySQL新版本的加密规则变了,在MySQL8.0之后,密码的加密规则是caching_sha2_password,之前的是mysql_native_password,所以解决办法要不就是升级navicat要不就是修改密码的加密规则。

解决方法:

这里我们采用 修改加密规则 的解决方案 如下:

  1. 首先,需要在CMD中 使用mysql -u root -p 命令,随后输入你的MySQL密码,登录到MySQL。
  2. 随后输入以下命令修改 加密规则
    • ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则【注意分号不要省略】
    • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '输入你的密码'; #更新一下用户的密码【注意分号不要省略,这里的 输入你的密码 替换成 旧密码或你的新密码】
      
    • FLUSH PRIVILEGES; #刷新权限【注意分号不要省略】
  3. 随后退出MySQL即可,使用Ctrl + z + 回车

这里再分享两个常见问题

MySQL8.0及以上版本的driver-class-name应该是 com.mysql.cj.jdbc.Driver

MySQL8.0以下版本的driver-class-name应该是 com.mysql.jdbc.Driver

乱码问题:

MySQL8.0及以上版本的url需要加上serverTimezone=UTC参数,例如:jdbc:mysql://localhost:3306/你要连接的数据库?serverTimezone=UTC

在这里,也分享出我的JDBC配置【YAML格式,MySQL8.0及以上版本】:

spring:
  datasource:
#    数据库驱动名称
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/你要连接的数据库?serverTimezone=UTC
    username: root
    password: 你的数据库密码
#    SpringBoot默认数据库连接池就是 Hikari
#    type: com.zaxxer.hikari.HikariDataSource

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值