使用DataStreamApi连接mysql 8.0报“SQLNonTransientConnectionException: Public Key Retrieval is not allowed”这个问题,有遇到过吗?如何解决?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到“SQLNonTransientConnectionException: Public Key Retrieval is not allowed”错误通常是由于MySQL 8.0默认使用了caching_sha2_password
身份验证插件,而某些客户端或连接器可能不支持或者未正确配置以适应这一变化。解决此问题的方法是更改用户的认证方式为mysql_native_password
,以下是具体步骤:
登录MySQL数据库: 首先,你需要以具有足够权限的用户(如root)登录到MySQL服务器。
修改用户认证方式: 执行以下SQL命令来更改特定用户的认证插件为mysql_native_password
。请将[$User]
、[$Host]
和[$Password]
替换为实际的用户名、主机地址(可以使用%
允许从任意地址连接)和密码。
ALTER USER '[$User]'@'[$Host]' IDENTIFIED WITH mysql_native_password BY '[$Password]';
确保执行后刷新权限:
FLUSH PRIVILEGES;
重启服务(可选): 在某些情况下,更改配置后可能需要重启MySQL服务使改动生效。这可以通过系统命令完成,例如在Linux系统上可以使用:
sudo systemctl restart mysql
检查连接配置: 确认你的DataStreamApi连接配置中没有强制要求SSL连接,或者如果MySQL服务器配置了SSL,确保在客户端连接时也正确配置了SSL相关参数。
通过上述步骤,你应该能够解决DataStreamApi连接MySQL 8.0时遇到的“Public Key Retrieval is not allowed”问题。如果问题仍然存在,建议检查DataStreamApi的版本是否支持MySQL 8.0的caching_sha2_password
插件,或者查看是否有相关的客户端配置选项来兼容新的密码认证方式。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。