1251 - Client does not support authentication protocol requested by server

这个错误 “1251 - Client does not support authentication protocol requested by server” 通常发生在较新的 MySQL 服务器(如 MySQL 8.0+)与旧版客户端工具(如 MySQL Workbench、Navicat 或某些程序)连接时,原因是 MySQL 8.0 默认使用了更安全的 caching_sha2_password 认证插件,而旧客户端可能只支持旧的 mysql_native_password 插件。


解决方案

方法 1:修改用户认证插件(推荐)
  1. 使用 MySQL 命令行登录(确保你有管理员权限):

    mysql -u root -p
    
  2. 查看当前用户的认证插件

    SELECT user, host, plugin FROM mysql.user;
    

    如果 plugin 列显示 caching_sha2_password,则需要修改。

  3. 将用户认证方式改为 mysql_native_password

    ALTER USER '你的用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    

    例如:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    
  4. 刷新权限

    FLUSH PRIVILEGES;
    
  5. 重新连接客户端,问题应该解决。


方法 2:升级客户端工具

如果不想修改服务器配置,可以升级客户端工具(如 MySQL Workbench、Navicat 或程序依赖的 MySQL 连接库)到最新版本,以支持 caching_sha2_password


方法 3:修改 MySQL 服务器配置(不推荐)

如果无法升级客户端,可以临时修改 MySQL 默认认证插件(需编辑配置文件):

  1. 找到 MySQL 配置文件 my.ini(Windows)或 my.cnf(Linux),通常位于:

    • C:\ProgramData\MySQL\MySQL Server 8.0\my.ini(Windows)
    • /etc/mysql/my.cnf(Linux)
  2. [mysqld] 部分添加:

    default_authentication_plugin=mysql_native_password
    
  3. 重启 MySQL 服务:

    net stop MySQL80
    net start MySQL80
    

总结

方案操作适用场景
修改用户认证插件ALTER USER ... IDENTIFIED WITH mysql_native_password兼容旧客户端
升级客户端工具安装最新版 MySQL Workbench/Navicat/JDBC 驱动保持安全性
修改服务器配置编辑 my.ini 并重启 MySQL临时解决方案

建议优先选择方法 1,因为它兼具安全性与灵活性。如果问题依然存在,请确认以下几点:

  • 客户端与服务器的版本是否一致。 - 防火墙是否阻止了 MySQL 默认端口(3306)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘要努力。

顺便点一个赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值