连接MySQL时报错:Public Key Retrieval is not allowed的解决方法
时间: 2024-10-18 16:00:22 浏览: 71
连接MySQL时遇到"Public Key Retrieval is not allowed"错误通常是因为SSL/TLS验证问题,特别是在使用非默认配置的情况下。以下是几个可能的解决步骤:
1. **检查SSL证书设置**:
- 确保MySQL服务器已启用SSL,并且你的客户端尝试连接到的是支持SSL的地址。
- 检查`my.cnf`文件(Windows下通常是`mysql.ini`)中的`[mysqld]`部分,确认`bind-address`, `ssl-ca`, `ssl-cert`, 和 `ssl-key` 是否指向正确的路径。
2. **更新或信任CA证书**:
- 如果MySQL服务器使用自签名证书,客户端需要导入该证书的信任。可以将证书复制到本地系统信任的目录(如Windows `%ProgramData%\cacerts`),或者在连接时指定`ssl-ca-file`选项。
- 使用`update-ca-certificates`命令(Linux)或`certutil`工具(Windows)来更新系统证书存储。
3. **允许公钥检索**:
- 针对某些旧版本的MySQL,你需要明确允许公钥检索,可以在连接字符串中添加`ssl-mode=verify-full&ssl-public-key-path=path/to/public_key.pem`。
4. **关闭SSL验证**:
- 作为临时解决方案,你可以禁用SSL验证,但这不是推荐的做法,因为它会暴露网络通信。可以在连接字符串中添加`ssl=0`或`ssl_verify_server_cert=0`。
5. **检查防火墙设置**:
- 确认没有防火墙规则阻止MySQL的SSL连接。
如果以上步骤都无法解决问题,可能是第三方库的问题,检查你的数据库连接库是否设置了合适的SSL选项。
阅读全文