使用DataStreamApi连接mysql 8.0报“SQLNonTransientConnect

使用DataStreamApi连接mysql 8.0报“SQLNonTransientConnectionException: Public Key Retrieval is not allowed”这个问题,有遇到过吗?如何解决?

展开
收起
雪哥哥 2022-10-24 23:32:43 254 分享 版权
阿里云 AI 助理回答

遇到“SQLNonTransientConnectionException: Public Key Retrieval is not allowed”错误通常是由于MySQL 8.0默认使用了caching_sha2_password身份验证插件,而某些客户端或连接器可能不支持或者未正确配置以适应这一变化。解决此问题的方法是更改用户的认证方式为mysql_native_password,以下是具体步骤:

  1. 登录MySQL数据库: 首先,你需要以具有足够权限的用户(如root)登录到MySQL服务器。

  2. 修改用户认证方式: 执行以下SQL命令来更改特定用户的认证插件为mysql_native_password。请将[$User][$Host][$Password]替换为实际的用户名、主机地址(可以使用%允许从任意地址连接)和密码。

    ALTER USER '[$User]'@'[$Host]' IDENTIFIED WITH mysql_native_password BY '[$Password]';
    

    确保执行后刷新权限:

    FLUSH PRIVILEGES;
    
  3. 重启服务(可选): 在某些情况下,更改配置后可能需要重启MySQL服务使改动生效。这可以通过系统命令完成,例如在Linux系统上可以使用:

    sudo systemctl restart mysql
    
  4. 检查连接配置: 确认你的DataStreamApi连接配置中没有强制要求SSL连接,或者如果MySQL服务器配置了SSL,确保在客户端连接时也正确配置了SSL相关参数。

通过上述步骤,你应该能够解决DataStreamApi连接MySQL 8.0时遇到的“Public Key Retrieval is not allowed”问题。如果问题仍然存在,建议检查DataStreamApi的版本是否支持MySQL 8.0的caching_sha2_password插件,或者查看是否有相关的客户端配置选项来兼容新的密码认证方式。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理