今天将新购买的个人服务器数据库升级 MySQL8.0,出现了本地 Navicat Premium 无法连接的问题。
第一反应: 是否远程连接未打开或者服务器安全组未设置,检查了远程连接设置以及服务器安全组开放端口,都正常。
连接提示错误为:
1
2
| MySQL said: Authentication plugin 'caching_sha2_password'
cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found
|
最终发现是因为 MySQL8 之后加密规则导致的:
MySQL8版本之前之前的加密规则是 mysql_native_password
,在 MySQL8 之后,加密规则是 caching_sha2_password
通过还原登录密码加密规则解决此问题:
1
2
3
4
5
| > mysql -u root -p
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;
|