1、拉取MySQL镜像
bash
docker pull mysql # 默认拉取最新版本
docker pull mysql:5.7 # 拉取5.7版本
docker pull mysql:8.0 # 拉取8.0版本
2、创建挂载目录
bash
# 创建挂载目录
mkdir -p /home/mysql/conf/ # -p: 多级创建
mkdir -p /home/mysql/log/
mkdir -p /home/mysql/data/
3、创建配置文件
bash
vim -p /home/mysql/conf/my.cnf # my.cnf为MySQL配置文件
# 配置文件内容如下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
default-time_zone='+8:00'
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4、启动容器
bash
# MySQL5.7的容器启动方式
docker run \
--name my-mysql \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/log/:/var/log/ \
-v /home/mysql/data/:/var/lib/mysql/ \
-d \
mysql:5.7 \
# MySQL8.0的容器启动方式:
docker run \
--name my-mysql \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/log/:/var/log/ \
-v /home/mysql/data/:/var/lib/mysql/ \
-d \
mysql:8.0 \
--default-authentication-plugin=mysql_native_password
- --name my-mysql:容器名称,指定容器的名称为my-mysql
- --restart=always:设置该容器开机自启
- -e MYSQL_ROOT_PASSWORD=123456:环境配置,指定root用户密码为123456
- -p 3306:3306:端口映射,第一个3306指的是宿主机端口,第一个3306指的是容器端口
- -v:数据卷挂载,将mysql内部文件同步到Linux的文件中
- -d:后台运行
- mysql:5.7:镜像名,基于镜像常见容器
注意:MySQL 5.7和MySQL 8的容器部署步骤差不多,但要注意MySQL 8在启动容器时的密码加密方式的修改,即添加:--default-authentication-plugin=mysql_native_password。这样用远程工具(如FinalShell等)才能连接。