刚刚安装好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 默认为了安全关闭了这个获取权限。