import{_ as p}from"./chunks/ArticleMetadata.Sb1DYAHo.js";import{_ as t,D as e,o as n,c as r,I as d,w as o,k as l,a as c,R as y,b as g,e as C}from"./chunks/framework.FVQzxbLi.js";import"./chunks/md5.RtphNWHi.js";const M=JSON.parse('{"title":"Docker 安装 MySQL 详细步骤","description":"","frontmatter":{"title":"Docker 安装 MySQL 详细步骤","author":"查尔斯","date":"2022/10/30 17:36","categories":["MySQL快速入门"],"tags":["MySQL","Docker","容器"],"showComment":false},"headers":[],"relativePath":"courses/mysql/03-附录/02-Docker安装MySQL.md","filePath":"courses/mysql/03-附录/02-Docker安装MySQL.md","lastUpdated":1669526061000}'),D={name:"courses/mysql/03-附录/02-Docker安装MySQL.md"},F=l("h1",{id:"docker-安装-mysql-详细步骤",tabindex:"-1"},[c("Docker 安装 MySQL 详细步骤 "),l("a",{class:"header-anchor",href:"#docker-安装-mysql-详细步骤","aria-label":'Permalink to "Docker 安装 MySQL 详细步骤"'},"")],-1),A=y(`
笔者说
笔者下面的步骤及配置是基于指定版本的实践,大多数程序大多数情况下在相差不大的版本时可以直接参考。(当然了,即使是非 Docker 方式安装程序也是一样道理)
笔者说
拉取镜像时需要明确镜像版本(Tag)。
不指定版本(Tag)就拉取镜像,那拉取下来的镜像版本(Tag)默认是 latest
(最新的)。latest
会跟随 Docker Registry 中的记录变化,现在拉取下来的 latest
是 x1 版本,但隔了一段时间后你在其他机器上再拉取 latest
可能就是 x2 版本了。
变化的版本,不利于生产环境部署的稳定。无论是后续在其他环境部署还是扩容集群等场景均要求根据架构要求指定好版本。
docker pull mysql:8.0.29
笔者说
下方的配置,切记要根据个人实际情况来修改。
# MYSQL_ROOT_PASSWORD:root 用户密码
# MYSQL_DATABASE:初始化数据库
# MYSQL_USER:初始化普通用户
# MYSQL_PASSWORD:初始化普通用户密码
docker run -d \\
--name mysql mysql:8.0.29 \\
--restart=always \\
-e TZ=Asia/Shanghai \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_DATABASE=test \\
-e MYSQL_USER=test \\
-e MYSQL_PASSWORD=123456 \\
-p 3306:3306 \\
-v /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d \\
-v /opt/disk/docker/volumes/mysql/data:/var/lib/mysql \\
-v /opt/disk/docker/volumes/mysql/logs:/logs \\
# 使用该参数,容器内的 root 用户才拥有真正的 root 权限
--privileged=true
服务器开放好相应端口或设置好安全组规则后,直接用 Navicat 连接即可。
如果你是用的 docker-compose 来安装,下方附上相应 docker-compose.yml 脚本内容。
version: '3'
services:
mysql:
container_name: mysql
image: mysql:8.0.29
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d
- /opt/disk/docker/volumes/mysql/data:/var/lib/mysql
- /opt/disk/docker/volumes/mysql/logs:/logs
privileged: true
编写好 docker-compose.yml 脚本后,在脚本同级目录执行下方命令即可。
docker-compose up -d
docker run -d \\
--name mariadb mariadb \\
--restart=always \\
-e TZ=Asia/Shanghai \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_DATABASE=test \\
-e MYSQL_USER=test \\
-e MYSQL_PASSWORD=123456 \\
-p 3306:3306 \\
-v /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d \\
-v /opt/disk/docker/volumes/mysql/data:/var/lib/mysql \\
--privileged=true
version: '3'
services:
mariadb:
container_name: mariadb
image: mariadb
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d
- /opt/disk/docker/volumes/mysql/data:/var/lib/mysql
privileged: true