首页 > 数据库技术 > 详细

JAVA后端连接MYSQL 8 报错:Public Key Retrieval is not allowed

时间:2021-06-05 17:58:07      阅读:13      评论:0      收藏:0      [点我收藏+]

1. 报错页面

当出现报错的时候,我反复检查了后端服务的配置,发现并没有问题,然后看日志发现:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

技术分享图片

2. 报错原因及解决办法

(1)报错原因
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
换另一种方式来说,就是java里面的mysql客户端版本太低,高版本的客户端不会有这个问题。

(2)解决办法
网上说添加如下参数在连接后面 allowPublicKeyRetrieval=true,但是这种方式并不安全,可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码。

最佳解决办法:
ALTER USER ‘root‘@‘%‘ IDENTIFIED BY ‘qwe123‘ PASSWORD EXPIRE NEVER;?#更改加密方式 
ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘qwe123‘;?#更新用户密码 
FLUSH PRIVILEGES;?#刷新权限 

JAVA后端连接MYSQL 8 报错:Public Key Retrieval is not allowed

原文:https://www.cnblogs.com/xiets/p/14852857.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!