docker创建mysql容器,并使用navicat连接至数据库,错误并解决:Authentication plugin ‘caching_sha2_password’ cannot be loaded

1、拉取mysql镜像

docker pull mysql

2、创建mysql容器

docker run -d --name mysqltest -p 3312:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

-d, --detach=false, 指定容器运行于前台还是后台,默认为false
–name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
-p, --publish=[], 指定容器暴露的端口
-e, --env=[], 指定环境变量,容器中可以使用该环境变量

3、进入mysql容器

docker exec -it mysqltest bash

4、进入mysql

mysql -uroot -p

输入密码

5、navicat尝试连接mysql
在这里插入图片描述

  • 主机填服务器的ip地址
  • 端口填创建容器时-p后的第一个端口
  • 密码填-e后写的密码

如果能够连接成功,则到这一步就行了

-------------------------分割线-------------------------

6、报错

Authentication plugin ‘caching_sha2_password’ cannot be loaded

原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

7、解决

修改加密规则

ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

更新一下用户的密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限

flush privileges;

8、连接成功
在这里插入图片描述
9、端口请求不同
阿里云服务器的端口有可能没有开放,需在控制台实例管理中修改安全组策略,开放出容器使用的端扣

Logo

更多推荐