Public Key Retrieval is not allowed
刚刚安装好mysql8,使用dbeaver工具链接提示Public Key Retrieval is not allowed 原因: 这个错误 "Public Key Retrieval is not allowed" 通常发生在连接工具(如 DBeaver, Navicat, Workbench)
刚刚安装好mysql8,使用dbeaver工具链接提示Public Key Retrieval is not allowed

原因:
这个错误 “Public Key Retrieval is not allowed” 通常发生在连接工具(如 DBeaver, Navicat, Workbench)尝试使用 sha2_password 身份验证连接 MySQL 8.0 时。因为安全原因,MySQL 默认不允许在非 SSL 连接中请求公钥。
解决办法:
方法一:修改连接工具配置(最快)
你不需要修改数据库,只需要在你的数据库连接软件(如 DBeaver 或 Navicat)中调整一个参数:
- 找到 编辑连接属性 (Edit Connection)。
- 进入 驱动属性 (Driver Properties) 或 高级 (Advanced) 选项卡。
- 找到
allowPublicKeyRetrieval这一项。 - 将其值从
false改为true。


方法二:修改 MySQL 用户验证方式
如果你希望兼容旧版的软件,或者不想在每个客户端都改配置,可以进入容器把 root 用户的加密方式改回兼容模式:
-
进入容器内部:
Bash
docker exec -it <你的容器名> mysql -uroot -p -
执行以下 SQL 语句:
SQL
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;注意:如果你是本地连接,
'%'可能需要换成'localhost'。
💡 为什么会这样?
MySQL 8.0 默认使用了更安全的 caching_sha2_password 插件,而不再是旧版的 mysql_native_password。当客户端通过禁用 SSL 的连接访问时,它必须明确获得服务器的公钥进行加密,而 MySQL 默认为了安全关闭了这个获取权限。
相关文章
database
Apache Doris BE 容器无限重启之谜
复盘 Apache Doris BE 容器启动后每 60 秒被重启的问题,排查 Windows 换行符导致的配置异常,并定位 Entrypoint 无密码连接 FE 的健康检查误判,最终通过覆盖入口脚本直接启动 BE。
devops
使用 acme.sh 手动 DNS 申请通配符免费证书并导出证书文件
介绍使用 acme.sh、Let's Encrypt 和手动 DNS 验证申请主域名与通配符证书的完整流程,包括两次执行脚本、配置 TXT 记录、导出 cert、key、fullchain、ca 文件及证书验证方法。
devops
Ubuntu 服务器互备实战:安全创建备份账号,用 SCP 定时备份静态资源
介绍两台 Ubuntu 服务器之间的轻量备份方案:使用专用低权限账号和独立 SSH 密钥,通过 SCP 定时传输按日期命名的静态资源压缩包,并在本地和远端保留最近 3 天备份。
这篇文章有帮助吗?
感谢反馈。