java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot Nacos读取MySQL报错

SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed的解决方案

作者:青花锁

最近的项目,突然都从MySQL5.7升级到8.0了,有些项目能运行成功,有些项目遇到了问题,启动不成功,显示数据库方面的异常信息,本文给大家介绍了SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed的解决方案,需要的朋友可以参考下

前言

最近的项目,突然都从MySQL5.7升级到8.0了。

有些项目能运行成功,有些项目遇到了问题,启动不成功,显示数据库方面的异常信息。

1、问题描述

在连接到MySQL数据库的时候,报错内容如下:“Public Key Retrieval is not allowed”。

翻译一下报错异常信息:使用springframework.jdbc包,不能获取JDBC连接,PublicKeyRetrieval不支持。

2、解决过程

mysql 8.0 默认使用 caching_sha2_password 身份验证机制 (即从原来mysql_native_password 更改为 caching_sha2_password。)

从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。 客户端不支持新的加密方式。 因此我们需要修改用户的密码和加密方式。

方案一:

在命令行模式下进入mysql,输入以下命令就可以解决问题了:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

或者

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

方案二:

如果我们没有MySQL的管理权限,那么只需在配置数据源的时候直接将属性allowPublicKeyRetrieval设置为true即可。

# spring配置
spring: 
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
      datasource:
          # 主库数据源
          master:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://127.0.0.1:3306/xxxdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
            username: root
            password: root

总结

实际工作中会遇到各种奇怪的问题,把问题记录下来,能帮助自己以后便捷的查找解决方,同时也希望可以帮到大家。

到此这篇关于SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed的解决方案的文章就介绍到这了,更多相关SpringBoot Nacos读取MySQL报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文