【202601】MYSQL-8.4+版本使用Gui工具登录时-1251-Client does not support authentication...

7 阅读1分钟

MySQL 8.4+ 连接旧客户端工具:认证协议错误完整解决方案

问题背景

使用旧版数据库可视化管理工具(如 Navicat 旧版、MySQL Workbench 旧版等)连接 MySQL 8.4+ 时,常遇到以下错误:

1251 - Client does not support authentication protocol requested by server

或执行修改命令时出现:

ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

错误原因

MySQL 8.0+ 默认使用 caching_sha2_password 认证插件,而旧客户端仅支持 mysql_native_password,导致连接失败。

完整解决方案-以修改root认证为例

步骤 1:检查当前用户和认证方式

-- 查看 root 用户的认证插件

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

通常结果如下:

+------+-----------+-----------------------+

| user | host      | plugin                |

+------+-----------+-----------------------+

| root | localhost | caching_sha2_password |

+------+-----------+-----------------------+

步骤 2:检查 mysql_native_password 插件是否可用

-- 检查插件状态

SELECT * FROM INFORMATION_SCHEMA.PLUGINS 

WHERE PLUGIN_NAME = 'mysql_native_password';

如果查询结果为空或 PLUGIN_STATUS 不是 ACTIVE,需要先启用插件。

插件有效一般结果是这样的

mysql> SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'mysql_native_password';
+-----------------------+----------------+---------------+----------------+---------------------+----------------+------------------------+--------------------+-----------------------------+----------------+-------------+
| PLUGIN_NAME           | PLUGIN_VERSION | PLUGIN_STATUS | PLUGIN_TYPE    | PLUGIN_TYPE_VERSION | PLUGIN_LIBRARY | PLUGIN_LIBRARY_VERSION | PLUGIN_AUTHOR      | PLUGIN_DESCRIPTION          | PLUGIN_LICENSE | LOAD_OPTION |
+-----------------------+----------------+---------------+----------------+---------------------+----------------+------------------------+--------------------+-----------------------------+----------------+-------------+
| mysql_native_password | 1.1            | ACTIVE        | AUTHENTICATION | 2.1                 | NULL           | NULL                   | Oracle Corporation | Native MySQL authentication | GPL            | ON          |
+-----------------------+----------------+---------------+----------------+---------------------+----------------+------------------------+--------------------+-----------------------------+----------------+-------------+
1 row in set (0.00 sec)

步骤 3:启用 mysql_native_password 插件(如需要)

编辑 MySQL 配置文件(Windows: my.ini,Linux: my.cnf),在 [mysqld] 部分添加:

[mysqld]

default-authentication-plugin=mysql_native_password

然后重启 MySQL 服务

步骤 4:修改用户认证方式

确认插件可用后,执行以下命令:

-- 修改 root 用户认证方式(替换 'your_password' 为你的实际密码)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

-- 刷新权限

FLUSH PRIVILEGES;

-- 验证修改是否成功

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

现在应该看到 plugin 列显示为 mysql_native_password。