docker安装mysql后,本地navicat连接报错client does not support authentication
解决办法:
1. docker ps -a 查找到容器id
2. docker exec -it id /bin/bash 进入mysql容器
3.mysql -u root -proot登陆mysql
4.use mysql; 进入mysql
5.查询用户表信息:
select host,user,authentication_string from user ;
6.更改host为% user为root的用户的authentication_string
host为%大家可以百度一下,说是方便远程连接
update user set authentication_string = 'root' where user = 'root' and host = '%';
update user set authentication_string = 'root' where user = 'root' and host = 'localhost';
7.如果还不行使用下面语句:
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
然后navicat登陆就成功啦
原因是:mysql 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。