Public Key Retrieval is not allowed异常

遇到的问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

(此类的错误多半是数据库连接驱动的8.0以上版本)

【注意】
如果MYSQL数据库8.0以上连接需要做以下配置:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/chiship_template?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456
jdbc.database=chiship_template

参数说明:
①useSSL=false MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭;
②allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥;
③serverTimezone=UTC 设置时区,mysql驱动8.0以上也要指定时区,不然也会报一些错;


最后总结:如果你使用的mysql是8.0以上的版本,建议最好把以上三个参数设置下,避免发生一些不必要的错误。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: "Public Key Retrieval is not allowed"错误通常是由于禁用了SSL/TLS协议传输导致的。在禁用SSL/TLS协议传输后,客户端需要使用服务器的公钥进行传输,但默认情况下客户端不会主动去找服务器拿公钥,从而导致错误的出现。\[2\]解决这个问题的方法有以下几种:一是启用TLS作为首选机制,确保可用;二是设置AllowPublicKeyRetrieval=True,允许客户端自动从服务器请求公钥;三是使用ServerRSAPublicKeyFile连接字符串设置服务器的RSA公钥。需要注意的是,启用AllowPublicKeyRetrieval=True可能会增加恶意代理执行MITM攻击以获取明文密码的风险,因此默认情况下是禁用的,需要显式启用它。\[3\] #### 引用[.reference_title] - *1* *2* [Public Key Retrieval is not allowed解决](https://blog.csdn.net/weixin_55599565/article/details/125140094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [DBeaver连接时报错:Public Key Retrieval is not allowed Public Key Retrieval is not allowed](https://blog.csdn.net/qq_42971035/article/details/120247453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值