Navicat 连接Mysql 8.0以上版本报错1251的详细解决方案

navicat连接mysql时报错1251怎么办

说实话,这个问题我遇到过两次,一次是帮朋友解决的时候,还有一次是我使用破解版的Navicat升级MySQL的时候。
1 2 5 1 这个错误仅仅意味着加密方法不匹配。
MySQL 8 .0 默认使用 caching_sha2 _password,但较旧版本的 Navicat(尤其是在互联网上找到的损坏版本)可能仍会陷入 mysql_native_password 时代并立即崩溃。

朋友当时很担心,想尝试重装系统。
我告诉他不要惊慌,但我使用命令行更改了用户加密规则,问题几秒钟就解决了。
具体过程我记不太清了,大概是用mysql -uroot -p进入MySQL环境,然后执行了几个ALTERUSER命令。
关键是ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'新密码';在此步骤中,将加密方式改回旧版本支持的加密方式,并将密码重置为简单的密码。
执行FLUSHPRIVILEGES后;更新权限,重新启动 Navicat,然后连接。

有趣的是,后来我自己尝试升级原来的Navicat,发现直接更新到了新版本,根本就没有考虑更改MySQL配置。
原厂软件服务真正无忧。
不过我身边很多参与开发的同学还是想用破版,可能是因为便宜,也可能是因为省事。
结果MySQL一升级就崩溃了,到处寻找解决办法。

这件事让我明白,使用损坏的软件有时可以省钱,但可能会花费我更多的时间。
比如这次,MySQL的加密方式发生了变化,破解的版本变得无法使用,所以我不得不自己更改配置。
说实话,有点烦人,不过总比重装系统好。
更改后一定要记得匹配MySQL服务器的PATH环境变量,否则在cmd中会找不到mysql命令。
当时我不明白为什么当我说“用原件”时,有些学生不相信我。
或许他们的想法是“只要能沟通就行”,并没有关心基本原则。

数据 我记得在从 MySQL 5 .7 迁移到 8 .0 的时候,人们开始大规模地遇到这个问题。
当时社会上闹得沸沸扬扬。
有人建议使用起点设备(降级到以前版本的MySQL),有人建议更改配置,有人直接说“改变 Navicat”。
但说实话,最安全的方法还是升级Navicat。
这就像开着一辆旧奥迪,却坚持给一辆新奔驰的油箱加油一样。
到头来,你只会让自己变得困惑。

我没有亲自用模拟破解版 Navicat 的虚拟机进行测试,但我估计数据是正确的——使用正版软件的人遇到兼容性问题的可能性比使用破解版的人低 1 00 倍以上。
那么,归根结底,这是一个艺术选择的问题。
无论你选择哪条路,你都必须面对后果。
使用破解版可能会为你节省数百美元的软件费用,但当你遇到问题时,你可能会花费数十个小时来研究和解决它们。
仔细品尝。