Docker部署MySQL8并使用Navicat建立连接(原创 超详细 可行)

先说一下环境,Centos7中安装了Docker,Docker版本20.10.9,在Docker中部署MySQL8.0.26

Centos关闭防火墙,或放行相关端口

关闭防火墙systemctl stop firewalld
禁止开机启动防火墙systemctl disable firewalld

重点是navicat在远程连接mysql的时候,会报2003和1251的错。

第一步:从Docker Hub拉取官方mysql镜像

访问DockerHub 官网,搜索mysql

 点第一个搜索到的mysql

 为了防止mysql版本有变动,我们不下载latest,而下载一个固定的版本,现在最新版本是8.0.26,我们就使用这个,复制命令 ,到centos中去执行。

docker pull mysql:8.0.26

稍等一会就会下载完成

第二步:创建一个新的mysql容器并运行

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.26

 这时候mysql已经跑起来了

我们使用navicat去测试连接

 navicat会报1251的错,出现这个问题的原因是MySQL8.0版本的加密方式和MySQL5.0的不一样,所以使用Navicat连接MySQL会报错。

解决办法:

我们进入容器内部,

docker exec -it mysql bash

打开mysql数据库,输入密码 root (在输密码root的时候不显示)

mysql -uroot -p

更改加密方式,输入命令

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

注意这个%,%表示让所有的ip都可以访问,mysql默认是只有localhost才能访问,我们这里顺手修改了让所有ip都能够访问,如果不修改,当navicat远程连接mysql的时候,会报2003的错误。当然,如果navicat和mysql在一台电脑上,你也可以把%替换为localhost:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更改密码,输入命令

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

最后一步,刷新,注意有分号;

FLUSH PRIVILEGES;

这时候我们去navicat测试连接,就可以连接上了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李硕硕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值