Docker部署MySQL8并使用Navicat建立连接(原创 超详细 可行)
先说一下环境,Centos7中安装了Docker,Docker版本20.10.9,在Docker中部署MySQL8.0.26第一步:从Docker Hub拉取官方mysql镜像访问DockerHub
先说一下环境,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测试连接,就可以连接上了。
更多推荐
所有评论(0)