【Docker环境部署】docker创建MySQL容器并远程连接(解决1251- Client does not ......报错问题)

一、下载MySQL镜像

使用docker pull 命令下载MySQL镜像

docker pull mysql:8.0.18  -->下载特定版本的镜像文件
docker pull mysql -->下载最新版本的镜像文件

下载8.0.18版本的MySQL镜像

 二、创建MySQL容器

当镜像下载完成之后,就使用docker run 命令创建MySQL容器,并且做好端口映射和目录挂载

docker run --name mysql -p 4306:3306 --net mynet --ip 172.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:8.0.18

 --name  容器的名字

-p  端口映射到宿主机4306端口

-net  归属网段

--ip 分配固定的IP地址

-v 目录挂载  宿主机:容器

-e 环境参数,指定root账户的密码

-d 后台运行

三、连接创建的MySQL

使用本地的navcat for mysql

宿主机开放端口并重启防火墙

 连接测试:

 报错:1251- Client does not support authentication protocol 

百度之后,原来是由于navicat版本的问题,出现连接失败的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。并提供了两种解决方案

1.升级navicat,由于navicat是收费的,个人感觉升级会比较麻烦点。 

2.把用户密码登录的加密规则还原成mysql_native_password这种加密方式,本人选择第二种解决方案

 解决步骤:

a、docker exec -it mysql bash 进入登录mysql

b、通过mysql -u root -p"进入mysql的命令行模式

 c、输入命令修改相关机密方法

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #这里的password是你正在使用的密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码这里的password为你修改的新密码。

FLUSH PRIVILEGES; #刷新权限,使自己的修改生效

 重启容器,并连接测试,但还是不能连接

d、然后use mysql

 e、查询表中的相关信息 select user,host,plugin from user where user='root';

 这时发现了问题,原理刚刚修改的是localhost,对于非本机的连接密码校验规则还是没有变。

f、再次输入命令修改相关机密方法

alter user 'root'@'%' identified by 'password' password expire never;

alter user 'root'@'%' identified with mysql_native_password by 'abc123456';//why是自己新修改的密码。

flush privileges;再次刷新一下权限配置。

 g、再次测试连接,连接成功

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

General_单刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值