升级到 MySQL 9.0 后,由于 mysql_native_password 删除,在 GKE 上连接到 MySQL 时出现问题

问题描述 投票:0回答:1

我正在使用 Google Kubernetes Engine (GKE) 来部署 MySQL。最近,我升级到了

mysql:latest
image,它现在指向MySQL 9.0。由于MySQL 9.0完全删除了
mysql_native_password
身份验证插件,我无法再连接到MySQL控制台,也无法将我的root帐户更新为
caching_sha2_password

这是我面临的问题:

  • 登录错误:当我尝试登录时,出现错误:
    Plugin 'mysql_native_password' is not loaded.
  • ConfigMap 尝试:我尝试使用 ConfigMap 添加
    default_authentication_plugin=caching_sha2_password
    mysql_native_password=ON
    ,但 Pod 崩溃并出现错误,指出未找到未知变量
    default_authentication_plugin=caching_sha2_password
    mysql_native_password
  • 无法备份数据:由于我无法登录我的root帐户,因此无法备份数据。
  • 降级问题:我尝试将 MySQL 降级到 LTS 版本(8.x),但遇到错误,指示 MySQL 无法从 9.0 降级到 8.x。
  1. 初始部署:
  • 使用
    mysql:latest
    图像导致部署MySQL 9.0。
  • 尝试使用根凭据连接并收到插件
    mysql_native_password
    未加载。
  1. ConfigMap 调整:
  • 通过 ConfigMap 将
    default_authentication_plugin=caching_sha2_password
    添加到 MySQL 配置。
  • 通过 ConfigMap 添加
    mysql_native_password=ON 
    到 MySQL 配置。
  • 两次尝试均导致 pod 因上述错误而崩溃。
  1. 降级尝试:
  • 尝试将镜像更改为MySQL 8.0。
  • 遇到错误 MySQL 服务器降级无效:
    Cannot downgrade from 90000 to 80401. Downgrade is only permitted between patch releases.

提前感谢您的帮助!

mysql kubernetes google-kubernetes-engine
1个回答
0
投票

MySQL 8.0 不再支持 mysql_native_password 插件。但是,如果您升级到9.0,该插件将被删除并替换为更强的身份验证方法。以下是解决连接问题的两种可能的解决方案:

选择替代身份验证包:

从 MYSQL 9.0 中的默认 caching_sha2_password 开始,您可以选择迁移客户端工具以使用此特定插件。参考您自己的客户端文档应该给出详细的概述。|

将MYSQL版本降回8.0:

如果部署不包含 caching_sha2_password,则改用 mysql_native_password 插件,并将部署映像降级到 MYSQL 8.0。

请参阅 Frederic Descamps 的 Oracle MySQL 博客

© www.soinside.com 2019 - 2024. All rights reserved.