前言
本篇文章介绍使用docker完成mysql部署,使用Navicat连接
1.mysql部署
1.首先拉取镜像,我这里拉取的是5.7版本的镜像,不填版本号默认是latest,最新版的;
docker pull mysql:5.7
2.查看拉取下来的镜像,我这里可以看到是拉取下来了的;
docker images
3.使用docker命令行启动容器;
docker run --name mysql -d -p 3306:3306 -v /var/lib/mysql:/data/mysql/data -v /etc/mysql/conf.d:/data/mysql/conf/conf.d -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7
这里做一下解释:
--name 是启动的容器名
-d 后台运行(不使用后台运行的话,xshell退出后服务就会停止)
-v 挂载文件路径 -v 容器文件路径:宿主机文件路径
-p 端口映射 -p 容器内端口:宿主机端口
-e 容器内配置,配置root账号密码为1234
最后面的mysql:5.7就是镜像名,同样,不加版本号的话会默认加一个:latest
mysql启动容器内的默认路径为 /var/lib/mysql 和 /etc/mysql/conf.d 这里也可以不做挂载,看个人习惯。
2.Navicat连接
正常来讲mysql部署完成,但是有些小伙伴会发现Navicat连接不上去,这里分享我初次部署遇到的几种情况(因为这次不是初次部署,所以相关报错图片这里不提供了,各位小伙伴自己判断排查)
①权限未分配
如果权限未分配的话,可能导致Navicat连接不上数据库或者连接上数据库,但是没法做其他操作,例如建库建表等。
这里打开我们的xshell,连接服务器进行配置:
a.首先查看运行中的容器,容器是否正常,端口是否正确映射等
docker ps
b.进入mysql容器,进行mysql配置
docker exec -it mysql bash
// 注意这里的mysql是指自己的mysql容器名称,不是固定的写mysql
// 进入容器后可以再次使用docker命令,例如docker ps来查看是否进入容器
// 进入容器后docker命令就用不了了,会提示错误
// 但是使用这个命令,有些小伙伴也进不去容器,这里可以试试下面这个(虽然我感觉都一样)
// docker exec -it mysql /bin/bash
c.进入数据库,修改配置
进入数据库:
mysql -uroot -p1234
下面的sql语句小伙伴们自己看着来,如果出现我这种情况的话就得加分号,隔行加。
-- 切换数据库
use mysql
-- 赋予权限
update user set host='%' where user='root'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
执行完成后,退出mysql,退出容器
// 退出mysql和退出容器都是这个命令
exit
再次使用Navicat连接试试,如果还不行重启一下docker容器,再试试,还是不行再接着往下看。
②服务器问题
如果你是云服务器,登上你的控制台,检查你的服务器对应的端口暴露没,做安全规则配置,我这里使用的华为云,所以用华为云演示(其他平台类似)。
a. 进入你的控制台,找到你的服务器;
b. 找到安全组,配置安全组入规则;
c. 配置入规则;
优先级填1,协议端口就填需要对外暴露的端口,描述根据自己端口作用填,也可以不填,点击确定,最后再试试Navicat是否可以连接。