关于JDBC连接数据库时出现的Public Key Retrieval is not allowed错误

问题描述

    最近在学习MyBatis框架,参考官方的文档通过配置文件的方式已经实现了通过Configuration配置文件和mapper映射文件访问mysql8数据库,于是想试试不使用XML文件去构建SqlSessionFactory,结合配置文件和官方文档,依次构建了DataSource,JdbcTransactionFactory,Configuration等等,并添加Mapper,在Mapper接口中通过注解配置了SQL语句,一步步的构建完成,前面都顺利执行没有抛出异常,当通过SqlSession拿到Mapper执行SQL语句的时候,抛出了Public Key Retrieval is not allowed异常。

解决过程

   通过一通百度,收集了可能导致这个问题的原因如下:

    1.mysql5及之前的版本使用的是旧版驱动"com.mysql.jdbc.Driver",mysql6以及之后的版本需要更新到新版驱动,对应的Driver是"com.mysql.cj.jdbc.Driver",但是这个驱动错误的信息是"Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.",排除这个原因。

    2.连接数据库的url中,加上allowPublicKeyRetrieval=true参数,经过验证解决该问题。

    3.网上看到另外的解决 办法,修改default_authentication_plugin设置,在my.ini中增加[mysqld]default_authentication_plugin=mysql_native_password,然后mysql命令行执行ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';最后在url中添加时区参数serverTimezone=Asia/Shanghai。

总结

    我用的第二种方法解决了,网上说的第三种方法是在数据库重启后遇到的,问题的原因也不甚清楚。不知道是不是mysql8才会遇到的一些坑。我在使用第二种方法连接成功一次后,再去掉allowPublicKeyRetrieval=true参数,还是能够正常连接,难道数据库连接过一次之后会自动缓存相同连接的配置信息吗,不是很懂。有懂的大佬还请指教。

  • 34
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
Public Key Retrieval is not allowed是一个错误消息,通常在使用DBeaver等数据库客户端连接数据库出现。这个错误消息表明,连接设置不允许公共密钥检索。这可能是由于数据库配置或网络设置导致的。要解决这个问题,有几种可能的方法可以尝试。 首先,可以检查数据库的配置。使用翻译软件翻译整个网页,找到数据库配置中的"AllowPublicKeyRetrieval"选项。确认该选项的值是否为true。如果不是,可以将其更改为true,以允许公共密钥检索。这可以通过编辑数据库的配置文件或在数据库管理工具中进行设置来实现。 另外,可以检查网络设置。有,网络中的防火墙或代理服务器可能会阻止公共密钥检索。确保网络设置允许数据库客户端与数据库服务器进行通信,并允许公共密钥检索。如果有必要,可以与网络管理员联系以获取更多帮助。 此外,还可以参考关于JDBC连接数据库出现"Public Key Retrieval is not allowed"错误的指南。这些指南可能提供了更具体的步骤和解决方案,以解决这个问题。 总结起来,要解决"Public Key Retrieval is not allowed"错误,可以通过检查数据库配置、调整网络设置,并参考相关指南来尝试解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [DBeaver Public Key Retrieval is not allowed解决](https://blog.csdn.net/Azure_xw/article/details/126254898)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值