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

在连接的url字符串后面添加allowPublicKeyRetrieval=true即可
如果添加多条,需要在之间添加"&",例如

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/liush?useSSL=false&allowPublicKeyRetrieval=true","root","123456");
### 错误原因分析 该错误通常发生在 DBeaver 客户端尝试通过 SSL/TLS 配置与 MySQL 数据库建立连接。具体来说,“Public Key Retrieval is not allowed”的原因是客户端未被允许主动检索服务器的公钥[^4]。 --- ### 解决方案一:修改 JDBC URL 参数 可以通过调整 DBeaver 的 JDBC 连接参数来解决问题。以下是具体的解决方案: #### 修改步骤 在 DBeaver 中编辑 MySQL 数据源的连接属性,在 **JDBC URL** 字段中添加 `allowPublicKeyRetrieval=true` 和 `useSSL=false` 参数。完整的 JDBC URL 可能如下所示: ```plaintext jdbc:mysql://<host>:<port>/<database>?allowPublicKeyRetrieval=true&useSSL=false ``` 其中 `<host>` 是数据库主机地址,`<port>` 是 MySQL 端口号(默认为 3306),`<database>` 是目标数据库名称[^1]。 此方法的作用是显式启用公钥检索功能并关闭 SSL 加密传输,从而避免因缺少公钥而导致的错误。 --- ### 解决方案二:更新驱动程序版本 如果当前使用的 MySQL Connector/J 版本较旧,则可能导致兼容性问题。建议下载最新版的 MySQL Connector/J 并替换原有的驱动文件。 #### 更新步骤 1. 访问官方站点下载最新的 MySQL Connector/J JAR 文件。 2. 将新下载的 JAR 文件导入至 DBeaver 的驱动管理器中。 3. 删除原有驱动或覆盖其路径指向新的 JAR 文件位置[^2]。 完成以上操作后重新测试连接即可消除潜在冲突。 --- ### 解决方案三:检查 MySQL Server 配置 有问题可能源于 MySQL 服务本身的配置不当。可以按照以下指导验证和修正相关设置: #### 启动 MySQL 服务 确保 MySQL 服务已正常启动。对于 Windows 用户而言,可通过图形界面找到对应的服务项(如名为“MySQL80”)或者执行命令行指令开启它: ```cmd net start MySQL80 ``` 这里假设服务名已被设定成标准形式即“MySQL80”,实际名字取决于安装过程中的自定义选项[^3]。 另外还需确认 my.cnf/my.ini 文件里是否存在关于 ssl_mode 或其他安全协议方面的强制约束条件;如有必要可适当放宽这些限制以便顺利实现无加密握手流程。 --- ### 总结 综上所述,针对"DBeaver MySQL 'Public Key Retrieval is not allowed'"这一常见异常状况提供了三种可行对策——优化 jdbc url 参数、升级 mysql connector/j 至最新稳定发行版以及审查后台 mysqld 实例的工作状态及其关联策略文档内容。任选其中之一实施均有望彻底根除此类现象的发生几率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值