MySQL - MySQL8.0 报错 Public Key Retrieval is not allowed的原因分析以及详细的解决方案
warning:
这篇文章距离上次修改已过183天,其中的内容可能已经有所变动。
错误解释:
MySQL 8.0 中出现 "Public Key Retrieval is not allowed" 错误通常是因为客户端尝试使用密码加密认证方法(如caching\_sha2\_password)进行连接,但是服务端配置不允许公钥检索。在 MySQL 8.0 之前的版本中,默认的认证插件是 mysql\_native\_password,而在 MySQL 8.0 及以后版本中,默认的认证插件变成了 caching\_sha2\_password。
解决方法:
- 更新客户端连接库:确保你的数据库客户端支持 MySQL 8.0 的认证方式。
修改服务端认证插件:如果不希望更新客户端,可以将服务端的认证插件改回 mysql\_native\_password。
- 登录到 MySQL 服务端。
执行以下 SQL 命令更改用户的密码插件:
ALTER USER 'your_username'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password';
刷新权限:
FLUSH PRIVILEGES;
在连接字符串中使用特定的认证插件:在连接数据库时,可以指定使用 mysql\_native\_password 认证插件。
- 例如,在 JDBC URL 中添加
?verifyServerCertificate=false&useSSL=false&serverTimezone=UTC&authenticationPlugIn=mysql_native_password
。
- 例如,在 JDBC URL 中添加
确保在实施任何解决方案之前理解其安全影响,并考虑是否需要更新客户端或改变认证插件。
评论已关闭