💡
原文英文,约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用户从内部和外部访问。
➡️