关于MySQL 8.4中mysql_native_password被禁用的问题,这是由于MySQL官方从8.4版本开始,已将此旧的认证插件默认设置为不加载

这个问题通常在你升级数据库或使用旧的客户端时,遇到类似 Plugin 'mysql_native_password' is not loaded 的错误。根据官方计划,此插件已被弃用,并将在未来版本中移除。

参考下面的解决方案:

⚠️ 重新启用旧插件

如果短期内无法让所有应用程序适配新的认证方式,可以临时重新启用 mysql_native_password 插件作为过渡。请注意,这只是权宜之计。

  1. 编辑配置文件:找到MySQL的配置文件 my.cnf (Linux) 或 my.ini (Windows)。在 [mysqld] 配置段下添加一行:

    [mysqld]
    mysql_native_password=ON
  2. 重启MySQL服务:保存配置文件后,重启MySQL服务使配置生效。

    • Linuxsudo systemctl restart mysqld (服务名可能为 mysqlmariadb)

    • Windows:在服务管理器中重启,或使用命令 net stop mysql84net start mysql84 (服务名可能不同)。

  3. 修改用户插件:服务重启后,仍需将特定用户的认证插件改回 mysql_native_password

    ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '你的密码';
    FLUSH PRIVILEGES;

💡 如何确认问题与选择

在操作前,你可以通过以下命令确认用户当前使用的认证插件:

SELECT user, host, plugin FROM mysql.user WHERE user = '你的用户名';

如果 plugin 列显示为 mysql_native_password,则说明该用户正受此问题影响。

你可以根据以下情况做出选择:

  • 全新安装或可接受修改:无脑选择推荐方案,直接切换到 caching_sha2_password

  • 升级后为兼容大量旧应用:先使用临时方案快速恢复服务,同时制定计划,逐步将应用迁移至新认证方式。