dbeavet 中Public key retrieval is not allowed,无法连接MySQL
时间: 2025-09-01 08:07:38 AIGC 浏览: 1
<think>好的,我需要解决用户在使用DBeaver连接MySQL时遇到的“Public Key Retrieval is not allowed”错误。根据提供的引用资料,首先需要了解这个错误的原因。根据引用[2]和[4],这个错误通常是因为MySQL服务器配置与客户端连接设置不匹配,尤其是当SSL/TLS被禁用时,客户端无法获取服务器的公钥。
接下来,解决方案方面,引用[3]和[4]提到了在连接参数中添加allowPublicKeyRetrieval=true。这应该是主要的解决方法。另外,用户可能需要检查MySQL的安装和配置是否正确,比如环境变量和服务启动状态,如引用[3]所述。
然后,我需要整理步骤,确保用户能够逐步操作。首先在DBeaver中编辑连接设置,找到驱动属性,添加allowPublicKeyRetrieval参数。同时,提醒用户如果可能的话启用SSL,或者考虑其他方法如使用CLI生成缓存,如引用[4]提到的。
还需要注意用户可能安装了多个MySQL版本,需要清理旧服务,引用[3]中提到了使用sc delete命令。这部分虽然可能不是直接相关,但可以作为补充提示。
最后,确保回答结构清晰,分步骤说明,并引用相关资料作为支持。同时,生成相关问题,帮助用户进一步理解问题背景和扩展解决方案。</think>### 解决DBeaver连接MySQL时出现“Public Key Retrieval is not allowed”的步骤
#### 1. **问题原因**
此错误通常由以下原因导致:
- **SSL/TLS传输被禁用**:客户端需使用服务器公钥加密身份验证,但未主动获取公钥[^4]。
- **MySQL用户密码变更或首次登录**:服务器未缓存公钥,需要手动允许客户端获取[^4][^2]。
- **驱动配置缺失**:未在连接参数中明确允许公钥检索[^3][^4]。
---
#### 2. **解决方案**
##### 方法1:修改DBeaver连接参数(推荐)
1. **打开DBeaver连接配置**:右键点击数据库连接 → 选择“编辑连接”。
2. **进入驱动属性**:切换到“驱动属性”选项卡。
3. **添加参数**:
- 找到`allowPublicKeyRetrieval`属性 → 设置为`true`。
- 若存在`useSSL`属性 → 设置为`false`(仅在明确禁用SSL时需设置)[^3][^4]。
4. **保存并测试连接**。

(图示:DBeaver驱动属性中添加参数)
##### 方法2:启用SSL/TLS传输(更安全)
- **修改连接URL**:在JDBC连接字符串中移除`useSSL=false`,例如:
```text
jdbc:mysql://localhost:3306/db_name?useSSL=true
```
- **配置MySQL服务器**:确保服务器已启用SSL证书[^4]。
##### 方法3:通过CLI生成公钥缓存(辅助方案)
1. **使用MySQL命令行登录**:
```bash
mysql -u root -p --get-server-public-key
```
2. **输入密码完成登录**:此操作会触发服务器发送公钥并缓存[^4]。
---
#### 3. **其他注意事项**
- **检查MySQL服务状态**:确保服务已启动(Windows可通过`net start MySQL80`启动)[^3]。
- **清理旧版MySQL残留**:若存在多个MySQL服务,使用管理员权限执行:
```bash
sc delete MySQL_Service_Name
```
移除无效服务[^3]。
---
阅读全文
相关推荐




















