目录
一,MySQL容器构建
docker mysql:5.7的持久化存储及远程连接
1.下拉镜像
docker pull mysql/mysql-server:5.7
注:后面的mysql标签是版本号,可选择,有:5.5/5.6/5.7/8.0
2.在宿主机中相关目录,用于挂载容器的相关数据
mkdir -p /data/mysql/{conf,data}注1:conf目录
必须提前上传my.cnf文件到/data/conf目录,并且它与window中的配置文件my.ini后缀名是不一样
注2:data目录
数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据
3.创建mysql5.7容器
docker run -p 3306:3306 \
--name mysql \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7参数说明:
-p 3306:3306:宿主机端口:容器端口
--name mysql:容器名字
-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件
-v /data/mysql/conf:/etc/mysql/conf.d
-v /data/mysql/logs:/logs
-v /data/mysql/data:/var/lib/mysq
--privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
--restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always表示,只要容器退出,则docker将自动重启容器
-e MYSQL_ROOT_PASSWORD=123456:设置root的密码
-d mysql/mysql-server:5.7:后台启动模式及使用的镜像
4.修改mysql允许Navicat远程连接
docker exec -it mysql /bin/bash 进入mysql5.7容器
mysql -u root -p; 登录mysql服务器,之后输入mysql密码:123456
grant all privileges on *.* to root@'%' identified by '123456' with grant option; 给用户授权
flush privileges; 更新权限后,外部就可以使用native进行连接了