Public Key Retrieval is not allowed

阿白
发布于 2026-02-04 / 0 阅读
0
0

Public Key Retrieval is not allowed

刚刚安装好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)中调整一个参数:

  1. 找到 编辑连接属性 (Edit Connection)。

  2. 进入 驱动属性 (Driver Properties) 或 高级 (Advanced) 选项卡。

  3. 找到 allowPublicKeyRetrieval 这一项。

  4. 将其值从 false 改为 true


方法二:修改 MySQL 用户验证方式

如果你希望兼容旧版的软件,或者不想在每个客户端都改配置,可以进入容器把 root 用户的加密方式改回兼容模式:

  1. 进入容器内部

    Bash

    docker exec -it <你的容器名> mysql -uroot -p
    
  2. 执行以下 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 默认为了安全关闭了这个获取权限。


评论