navicat连接mysql时会报错1251-Client does not support authentication protocol requested by server 我这里是用的docker安装的容器
这里的原因是因为root账号的host是localhost导致的,只要修改一下权限即可;
第1步:
docker exec -it mysqlserver /bin/bash
第2步:
mysql -uroot -p
第3步:输入root密码
第4步:
show databases;
第5步:
use mysql;
第6步:查看账号权限
select host,user,plugin,authentication_string from mysql.user;
第7步:
alter user 'root'@'%' identified with mysql_native_password by '123456';
第8步:刷新权限
flush privileges;
如果遇到两个root账号 可以删除其中一个
drop user 'root'@'';
其实不建议docker用来跑mysql等数据库服务,近几天的操作发现docker容器中的mysql时不时的会出现初始化的状态,也就是root账号会出现localhost,本地环境也无法远程连接mysql,后来才发现docker不适合用来跑mysql等数据库服务。如果容器有异常或 MySQL 服务异常,自动启动一个全新的容器。也就会出现不能远程连接的问题。