目录
一.问题原因
通过相关问题查阅,发现是由于navicat版本的问题造成连接失败。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
MySql查看版本号
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.28 |
+-----------+
1 row in set (0.00 sec)
可以看到确实是mysql8,再查看加密规则是否是:caching_sha2_password,如下可看到确实需要修改加密规则。
mysql> use mysql;
Database changed
mysql> select user,host,plugin from user where user='root';
+------+-----------+-----------------------+
| user | host | plugin |
+------+-----------+-----------------------+
| root | localhost | caching_sha2_password |
+------+-----------+-----------------------+
1 row in set (0.00 sec)
二.解决方法
通过修改登录密码的方式修改加密规则:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; #修改密码
FLUSH PRIVILEGES; #刷新权限
上述命令执行后登录密码变为123456,同时加密规则变为:mysql_native_password
再次查看加密规则:
mysql> use mysql;
Database changed
mysql> select user,host,plugin from user where user='root';
+------+-----------+-----------------------+
| user | host | plugin |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+
1 row in set (0.00 sec)
可以看到确实已经改变,现在可重新用navicat连接mysql。