Public Key Retrieval is not allowed

Public Key Retrieval is not allowed,这通常是由于 MySQL 8.0 及以上版本使用了新的默认认证插件 caching_sha2_password,而客户端(这里是你的 Java 应用程序)没有配置允许公钥检索导致的。

查找解决办法之前,先看看SQL打开了没有!!!!!!!!!

解决方法:

1. 在 JDBC 连接 URL 中允许公钥检索

你可以在 JDBC 连接 URL 中添加 allowPublicKeyRetrieval=true 参数来允许公钥检索:

jdbc:mysql://你的数据库地址:3306/你的数据库名?allowPublicKeyRetrieval=true&useSSL=false
  • allowPublicKeyRetrieval=true:允许客户端从服务器检索公钥。

  • useSSL=false:如果不需要 SSL 加密连接,可以关闭 SSL(根据你的需求调整)。

2. 更改 MySQL 用户的认证插件

如果你不想修改代码,可以将 MySQL 用户的认证插件从 caching_sha2_password 改为 mysql_native_password。执行以下 SQL 命令:

ALTER USER '你的用户名'@'你的主机' IDENTIFIED WITH mysql_native_password BY '你的密码';

例如:

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

然后刷新权限:

FLUSH PRIVILEGES;
3. 升级 MySQL 驱动

如果你使用的是较旧版本的 MySQL 驱动(如 mysql-connector-java-5.x),建议升级到最新版本(如 mysql-connector-java-8.x),因为新版本对 caching_sha2_password 的支持更好。

在 Maven 中更新依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 使用最新版本 -->
</dependency>
4. 检查 MySQL 服务器配置

确保 MySQL 服务器配置允许客户端使用 caching_sha2_password 插件,并且网络连接没有问题。


总结:

  • 最简单的解决方法是修改 JDBC 连接 URL,添加 allowPublicKeyRetrieval=true

  • 如果不想修改代码,可以更改 MySQL 用户的认证插件为 mysql_native_password

  • 升级 MySQL 驱动也是一个推荐的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flyee-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值