MySQL:插件 'mysql_native_password' 未加载

MySQL:插件 'mysql_native_password' 未加载

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

在libera:#mysql中,一个用户在docker容器中运行mysql:latest版本的MySQL。容器自动升级到MySQL 9.0.0,删除了mysql_native_password插件。用户无法登录数据库,没有备份和副本。通过docker重现问题并恢复实例。使用LVM2和XFS文件系统创建10GB测试文件系统,挂载到/a目录。验证插件为即将被弃用的mysql_native_password。升级到8.0和8.4版本时遇到认证方法不再被识别的问题。通过创建恢复my.cnf文件解决问题,并执行恢复操作。演示使用ALTER USER语句升级认证方法为caching_sha2_password。演示创建具有完整权限的其他用户。容器现在可以通过root用户从内部和外部访问。

🎯

关键要点

  • 用户在docker容器中运行MySQL,容器自动升级到MySQL 9.0.0,删除了mysql_native_password插件。
  • 用户无法登录数据库,且没有备份和副本。
  • 使用LVM2和XFS文件系统创建10GB测试文件系统,并挂载到/a目录。
  • 验证mysql_native_password插件已被弃用,使用5.7版本重现问题。
  • 通过docker运行5.7版本的MySQL,确认使用mysql_native_password插件。
  • 升级到8.0版本后,数据目录升级成功,但仍然使用mysql_native_password。
  • 在8.4版本中,mysql_native_password插件不再被识别,登录失败。
  • 通过修改my.cnf文件,添加skip_grant_tables配置,进行恢复操作。
  • 使用ALTER USER语句将认证方法升级为caching_sha2_password。
  • 创建具有完整权限的新用户,并验证用户权限。
  • 容器现在可以通过root用户从内部和外部访问。
➡️

继续阅读