• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解决Navicat Premium 连接 MySQL 8.0 报错1251的问题分析

    人闲太久,努力一下就以为是在拼命。

    一、问题

    Navicat Premium 连接 MySQL 8.0 报错:

    1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

    二、原因

    MySQL 8.0 改变了密码认证方式。

    MySQL 8.0 之前版本的密码认证方式为:

    mysql_native_password

    为了提供更安全的密码加密方式,从 MySQL 8.0 版本开始,默认使用密码认证方式为:

    caching_sha2_password

    报错 1251 的原因也很明显:

    Client does not support authentication protocol requested by server;

    翻译为中文就是:“客户端不支持服务端请求的认证协议”。

    我这里用的 Navicat Premium 11 去连接 MySQL 8.0,因为版本太低,所以不支持 caching_sha2_password 的密码加密方式!!

    MySQL 命令行终端,可以查看版本以及默认密码认证方式:

    root@程序员的一天:/# mysql -u root -p   
    Enter password: 
    Welcome to the MySQL monitor. 
    
    mysql> 
    mysql> 
    # 查看版本
    mysql> select version();
    +-----------+
    | version() |
    +-----------+
    | 8.0.21 |
    +-----------+
    1 row in set (0.00 sec)
    
    mysql> 
    mysql> 
    # 查看默认加密方式
    mysql> 
    mysql> use mysql;
    
    Database changed
    
    mysql> 
    mysql> select host, user, plugin from user;
    +-----------+------------------+-----------------------+
    | host  | user    | plugin    |
    +-----------+------------------+-----------------------+
    | %   | root    | caching_sha2_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session | caching_sha2_password |
    | localhost | mysql.sys  | caching_sha2_password |
    | localhost | root    | caching_sha2_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)
    
    mysql> 

    可以看到, MySQL 8.0 默认全部用户的密码加密方式都是 caching_sha2_password

    三、解决

    解决这个问题,有两种方法。

    两种方法都可行,但是加密规则最好不要乱改,很容易出问题。所以,推荐使用“方法2”。

    3.1、修改 MySQL 8.0 密码认证方式

    MySQL 命令行终端分别执行以下操作:

    # 更新root用户的密码为"123456",
    # 注意,这里需要将"123456"换成自己的密码,请勿使用弱密码!
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    
    # 刷新权限,使密码更新生效
    FLUSH PRIVILEGES;

     

    简单演示一下:

    第一步:进入 mysql 命令行终端。

    root@ed2a490912e5:/# mysql -u root -p
    Enter password: 
    
    mysql> 

    第二步:查看默认密码认证方式。

    mysql> use mysql;
    mysql> select host, user, plugin from user;
    +-----------+------------------+-----------------------+
    | host  | user    | plugin    |
    +-----------+------------------+-----------------------+
    | %   | root    | caching_sha2_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session | caching_sha2_password |
    | localhost | mysql.sys  | caching_sha2_password |
    | localhost | root    | caching_sha2_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)
    
    mysql> 

    可以看到,root 用户密码认证方式为 caching_sha2_password

    第三步:修改 root 用户密码认证方式,如果是其他用户,root 替换为其他用户名即可。等同于更新一下密码!

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.04 sec)

    第四步:再次查看 root 用户密码认证方式。

    mysql> select host, user, plugin from user;
    +-----------+------------------+-----------------------+
    | host  | user    | plugin    |
    +-----------+------------------+-----------------------+
    | %   | root    | caching_sha2_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session | caching_sha2_password |
    | localhost | mysql.sys  | caching_sha2_password |
    | localhost | root    | mysql_native_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)

    注意看,root 用户密码认证方式变成了 mysql_native_password

    再次使用Navicat Premium 11 连接 MySQL 8.0连接成功

    再次提示,修改密码认证方式,很容易出问题,不推荐!

    3.2、安装新版本 Navicat Premium

    经我测试,Navicat Premium 12 及以上版本均支持 MySQL 8.0 连接。最新版本是 Navicat Premium 15,官网下载地址:

    http://www.navicat.com.cn/download/navicat-premium

    安装很简单,运行安装包,根据提示一步一步安装即可。遗憾的是 Navicat Premium 不是免费软件,永久许可证价格比较昂贵… …官网报价:人民币 4,449.0 元,企业版甚至上万了。贫穷,让我流下眼泪,哭唧唧


    好在可以破解!!!
    具体可以参考:Navicat Premium 15 永久破解安装教程

    免责申明:仅供技术交流,如产生法律纠纷与本人无关。如有侵犯版本,联系删除!

    附上一张效果图:

    到此这篇关于Navicat Premium 连接 MySQL 8.0 报错“1251”分析解决的文章就介绍到这了,更多相关Navicat Premium 连接 MySQL 8.0 报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 使用Navicat Premium工具将oracle数据库迁移到MySQL
    • Navicat Premium远程连接MySQL数据库的方法
    • Navicat Premium操作MySQL数据库(执行sql语句)
    • Navicat premium连接数据库出现:2003 Can''t connect to MySQL server on''localhost''(10061)
    • Navicat Premium 15 永久破解激活工具及安装教程(亲测可用)
    • 安装配置mysql及Navicat prenium的详细流程
    上一篇:MySQL null与not null和null与空值''''的区别详解
    下一篇:mysql 8.0.22 安装配置图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解决Navicat Premium 连接 MySQL 8.0 报错1251的问题分析 解决,Navicat,Premium,连接,