"Public Key Retrieval is not allowed" 解决方法 (SQLark + MySQL 9.7)
mysql_native_password
caching_sha2_password
Public Key Retrieval is not allowed
该错误通常由 MySQL 8.0+ 的 `caching_sha2_password` 认证方式与客户端默认安全策略冲突导致。以下是三种解决方案,推荐优先尝试 方案一。
✅ 方案一:修改 SQLark 连接参数(推荐)
无需改动数据库,仅修改 SQLark 中的连接属性即可。
-
打开 SQLark,右键点击报错的数据库连接,选择 **编辑连接**。
-
切换到 **驱动属性** 标签页。
-
添加或修改以下两个参数:
-
`allowPublicKeyRetrieval` → 值设为 `true`
-
`useSSL` → 值设为 `false`
- 点击 **确定**,重新尝试连接。
> 若属性列表中无这两项,尝试点击"添加参数"手动加入。
🔑 方案二:降级用户认证插件(兼容性好,安全性略低)
通过 SQL 将用户的认证插件改为 `mysql_native_password`,MySQL 9.7 强制使用
caching_sha2_password插件作为唯一的认证方式。完全废弃mysql_native_password插件。
-
用其他客户端(如MySQL命令行)连接到数据库。
-
执行以下 SQL,将 `'username'`、`'host'`、`'your_password'` 替换为实际值:
sql
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;