这是因为mysql 8.0以上版本默认使用 caching_sha2_password 身份验证机制;低版本Navicat客户端不支持新的加密方式。
而我在docker中安装的mysql是用docker pull mysql命令安装的,由于默认版本号是最新的,所以版本一定在8.0以上。
命令查询出mysql的容器id
docker ps
命令进入容器命令行
docker exec -it 容器id bash
如下图
进入mysql命令行模式
mysql -u root -p
如下图,输入密码
查看用户信息后面 ; 不要丢
select host,user,plugin,authentication_string from mysql.user;
host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
使用mysql_native_password加密方式加密,这里要修改一下密码(可以使用老密码)
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY BY '你的密码';
刷新生效
flush privileges;
再次查询
然后尝试连接就可以连接成功了