使用 docker 安装 MySql

以 mysql 5.7 为例:

1、拉取 mysql 镜像

docker pull mysql

2、启动 mysql 容器

# 1、以不挂载目录的形式创建容器,将容器中 my.cnf 文件复制到宿主机中
docker run --restart=always --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 -d  mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker cp mysql:/etc/my.cnf /Users/wml/alidata/data/docker/mysql/my.cnf

# 2、删除 mysql 容器,重新创建

docker container stop mysql

docker container rm mysql

docker run --restart=always --name mysql -p 3306:3306 \
-v /Users/wml/alidata/data/docker/mysql/my.cnf:/etc/my.cnf \
-v /Users/wml/alidata/data/docker/mysql/data/:/var/lib/mysql  \
--network lnmp -e MYSQL_ROOT_PASSWORD=111111 -d  mysql:latest  \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# 3、在宿主机中修改 my.cnf 配置文件,增加错误日志和慢查询日志纪录配置

mkdir /Users/wml/alidata/data/docker/mysql/data/log

touch /Users/wml/alidata/data/docker/mysql/data/log/mysql_error.log

[mysqld]
# 错误日志配置
log-error=/var/lib/mysql/log/mysql_error.log

# 慢查询日志配置
# 表示是否开启慢查询日志,1开0关
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/log/mysql_slow_query.log
# 表示查询时间>=1秒才记录日志,默认10s
long_query_time = 1

参数说明

  • --restart=always # 设置Docker启动后自动运行

  • --name mysql # 此容器的别名

  • -p 3306:3306 # 前面是暴露出去的端口,后面是容器内部的服务端口

  • -v ~/mysql:/var/lib/mysql 本地目录:容器路径

  • -e MYSQL_ROOT_PASSWOR root用户的密码

  • -d 后台运行

  • mysql:latest 指定 mysql docker 镜像