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用户从内部和外部访问。

延伸问答

MySQL 9.0.0中删除了哪个插件?

mysql_native_password插件在MySQL 9.0.0中被删除。

如何恢复无法登录MySQL数据库的问题?

可以通过修改my.cnf文件,添加skip_grant_tables配置来恢复登录。

在MySQL 8.4版本中,为什么无法使用mysql_native_password插件?

在MySQL 8.4版本中,mysql_native_password插件不再被识别,因此登录失败。

如何将MySQL用户的认证方法升级为caching_sha2_password?

可以使用ALTER USER语句将用户的认证方法升级为caching_sha2_password。

在Docker中如何创建MySQL测试环境?

可以通过docker命令创建MySQL容器,并挂载外部卷来设置测试环境。

如何创建具有完整权限的新用户?

可以使用CREATE USER语句创建新用户,并使用GRANT语句赋予其完整权限。

🏷️

标签

➡️

继续阅读