MySQL 9删除了旧的mysql_native_password插件,需要使用支持caching_cha2_password插件的较新版本PHP与之兼容。测试表明,PHP 7.4.33、8.0.30、8.1.29、8.2.21和8.3.9与MySQL 9兼容。建议升级PHP版本以获得更好的MySQL和PHP编码体验。
在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用户从内部和外部访问。
ProxySQL 1.2.3版本新增admin-hash_passwords功能,支持哈希密码。使用SAVE MYSQL USERS FROM RUNTIME命令将密码哈希到mysql_users表中,并使用SAVE MYSQL USERS TO DISK命令将其持久化。必须使用mysql_native_password插件创建数据库用户帐户。
完成下面两步后,将自动完成登录并继续当前操作。