美文网首页MySQL
Navicat Premium 连接 MySQL 8.0 报错"

Navicat Premium 连接 MySQL 8.0 报错"

作者: 程序员的一天 | 来源:发表于2020-11-11 15:12 被阅读0次

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

    一、问题

    Navicat Premium 连接 MySQL 8.0 报错:

    1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
    
    Navicat Premium 11 连接 MySQL 8.0 报错

    二、原因

    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

    三、解决

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

    • 方法1:修改 MySQL 8.0 的密码认证方式。
    • 方法2:安装新版本 Navicat Premium

    两种方法都可行,但是加密规则最好不要乱改,很容易出问题。所以,推荐使用“方法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@程序员的一天:/# 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连接成功

    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 15 企业版报价

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

    关注对应的公众号,私信可以获取破解工具。虽然,可以破解。不过,有钱的话,还是建议支持正版!!

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

    附上一张效果图:

    Navicat Premium 15 连接 MySQL 8.0

    END.

    一位普通的程序员,奋斗路上砥砺前行。工作之余喜欢写些东西,涉及编程生活热点等。感兴趣的微信朋友,可以搜一搜:【程序员的一天】,欢迎关注、支持,谢谢!

    每一个关注点赞,都是极大的支持和鼓励。最后,感谢阅读!

    原创不易,点个赞呗~

    相关文章

      网友评论

        本文标题:Navicat Premium 连接 MySQL 8.0 报错"

        本文链接:https://www.haomeiwen.com/subject/oviebktx.html