小工具知识网

当前位置: 首页 > 行业知识 > Springboot项目从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed

行业知识

Springboot项目从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed

2026-11-02 18:42:57 来源:互联网转载

作者主页:青花锁 简介:Java领域优质创作者、Java微服务架构公号作者

简历模板、学习资料、面试题库、技术互助

文末获取联系方式


往期热门专栏回顾

专栏描述
Java项目实战介绍Java组件安装、使用;手写框架等
Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、Vue
Java微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc等实战操作
Java基础篇Java基础闲聊,已出HashMap、String、StringBuffer等源码分析,JVM分析,持续更新中
Springboot篇从创建Springboot项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回、全局异常处理、Swagger文档
Spring MVC篇从创建Spring MVC项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回
华为云服务器实战华为云Linux服务器上操作nginx、git、JDK、Vue等,以及使用宝塔运维操作添加Html网页、部署Springboot项目/Vue项目等
Java爬虫通过Java+Selenium+GoogleWebDriver 模拟真人网页操作爬取花瓣网图片、bing搜索图片等
Vue实战讲解Vue3的安装、环境配置,基本语法、循环语句、生命周期、路由设置、组件、axios交互、Element-ui的使用等
Spring讲解Spring(Bean)概念、IOC、AOP、集成jdbcTemplate/redis/事务等

前言

最近的项目,突然都从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

总结

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


资料获取,更多粉丝福利,关注下方公众号获取

上一篇:在Python中matplotlib函数的plt.plot()函数的颜色参数设置,以及可以直接运行的程序代码!

下一篇:揭秘折纸艺术,探索折叠词汇的无限魅力