当前位置:数据库 > > 正文

navicat连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)

时间:2022-03-29 03:06:24类别:数据库

navicat连接mysql报错

解决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

navicat连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)

二、原因

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

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

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

  • ?
  • 1
  • caching_sha2_password
  • 报错 1251 的原因也很明显:

  • ?
  • 1
  • Client does not support authentication protocol requested by server;
  • 翻译为中文就是:“客户端不支持服务端请求的认证协议”。

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

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 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 命令行终端分别执行以下操作:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • # 更新root用户的密码为"123456",
  • # 注意,这里需要将"123456"换成自己的密码,请勿使用弱密码!
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
  •  
  • # 刷新权限,使密码更新生效
  • FLUSH PRIVILEGES;
  • 简单演示一下:

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • root@ed2a490912e5:/# mysql -u root -p
  • Enter password:
  •  
  • mysql>
  • 第二步:查看默认密码认证方式。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 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 替换为其他用户名即可。等同于更新一下密码!

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 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 用户密码认证方式。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 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连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)

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

    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连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)
    navicat连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)

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

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

    附上一张效果图:

    navicat连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)

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

    原文链接:https://blog.csdn.net/pythontide/article/details/109616956

    上一篇下一篇

    猜您喜欢

    热门推荐