背景
最近使用docker拉取最新的Mysql版本run,Navicat 登录Mysql报如下错误,WorkBench连接正常。
问题原因:
是由于navicat版本的问题造成连接失败。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
解决
进入Docker 容器内部
[root@localhost ~]# docker exec -it some-mysql-003 bash
登录root账号
root@bdbe2033130b:/# mysql -u root -p
输入密码
查看用户信息
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| % | root | caching_sha2_password | $A$005$W25eUH^*VWxHfhOq%ZuY5S0STiDcE2aPR9srTF86pedXadFYHOYmnkLKVs4C |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
*zXWMalhost | root | caching_sha2_password | $A$005$@b\Dv?i-\
DzgnpLPedS3cCfy38QEGwHyFMMfZ73rdCTwZde/702 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
修改用户密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (1.74 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.01 sec)
Navicat重新登录成功。