# Docker 安装 MySQL
# 一、Docker安装
拉取镜像
docker search mysql docker pull mysql # 拉取最新版本 mysql 镜像 # docker pull mysql:8.0.16 # 拉取指定版本 docker images
1
2
3
4启动容器运行镜像
docker run --name mysql -p 3306:3306 \ --restart=always \ -v ~/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql
1
2
3
4
5一条命令方式
创建虚拟网段
docker network create -d bridge my-bridge
,同一网段的容器就可以互相访问宿主机的sql目录挂载到容器内的docker-entrypoint-initdb.d,挂载到该目录下的SQL文件会在MySQL容器创建后自动执行,完成初始化
docker run \ -p 3306:3306 \ --name mysql \ --restart=always \ -v ~/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql # `-p 3307:3306` 3307是容器向外暴露的端口 3306是容器内部端口 # `-d` 后台运行 # `--restart=always` 随着 docker 的启动而启动 # `--name mysql_01` 容器名称 # `-e MYSQL_ROOT_PASSWORD=123456` mysql初始密码 # `-v` 数据卷挂载 # -v ~/mysql/data:/var/lib/mysql # mysql数据文件 # -v ~/mysql/sql:/docker-entrypoint-initdb.d # sql文件可以放到该目录下,启动容器自动执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16查看日志
docker ps docker logs mysql_01
1
2进入容器
docker exec -it mysql bash # 进入容器内 mysql -uroot -p # 连接mysql
1
2卸载
docker stop mysql_01 # 停止容器 docker start mysql_01 # 启动容器 docker rm mysql_01 # 删除容器 docker rmi mysql # 删除镜像
1
2
3
4
注意:远程连接mysql连不上可能是防火墙问题 参考linux防火墙
# 二、SQL数据备份
# MySQL官方命令方式
备份全部数据
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
1备份指定库
docker exec mysql sh -c 'exec mysqldump --databases aaa -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/aaa-databases.sql
1仅导出结构,不要数据
docker exec mysql sh -c 'exec mysqldump --no-data --databases aaa -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/aaa-databases.sql
1