文章归档:https://www.yuque.com/u27599042/coding_star/nckzqa73g47hgz3x
查询 MySQL 镜像
docker search mysql
拉取 MySQL 镜像
docker pull mysql
在宿主机创建映射目录
mkdir -p \
/home/docker/mysql/log \
/home/docker/mysql/data \
/home/docker/mysql/conf \
/home/docker/mysql/mysql-files
先随便新建一个 MySQL 容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
复制容器中的配置文件到宿主机的 MySQL 配置文件映射目录
docker cp mysql:/etc/mysql /home/docker/mysql/conf/
将 /home/docker/mysql/conf/mysql/ 目录下的文件和目录移动到 /home/docker/mysql/conf/ 目录下
mv /home/docker/mysql/conf/mysql/* /home/docker/mysql/conf/
删除 /home/docker/mysql/conf/mysql 目录
rm -rf /home/docker/mysql/conf/mysql
删除 mysql 容器
docker rm -f mysql
运行 mysql 容器
docker run \
-p 3306:3306 \
--name mysql \
--restart=always \
--privileged=true \
-v /home/docker/mysql/conf:/etc/mysql \
-v /home/docker/mysql/data:/var/lib/mysql \
-v /home/docker/mysql/log:/var/log/mysql \
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql
# 运行 docker 容器
docker run \# 宿主机与容器端口映射
-p 3306:3306 \# 指定运行容器的名称
--name mysql \# docker 容器会跟随 Linux 重启而重启
--restart=always \# 容器具有 root 权限
--privileged=true \# mysql 容器配置文件目录映射
-v /home/docker/mysql/conf:/etc/mysql \# mysql 容器数据文件目录映射
-v /home/docker/mysql/data:/var/lib/mysql \# mysql 容器日志文件目录映射
-v /home/docker/mysql/log:/var/log/mysql \# 做这个映射,为了避免有时候会报错
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files \# mysql 容器时区配置文件目录映射
-v /etc/localtime:/etc/localtime:ro \# 指定环境变量,指定 mysql root 用户密码
-e MYSQL_ROOT_PASSWORD=root \# docker 运行的容器镜像为 mysql (以守护进程运行)
-d mysql
编辑 MySQL 配置文件
在mysql 容器配置文件目录映射 /home/docker/mysql/conf/conf.d/ 中新建 my.cnf MySQL 配置文件,在其中编写如下内容:
# mysql8# mysql服务器配置
[mysqld]# 设置server_id,同一局域网内需要唯一
# server_id=101# 配置mysql服务器的字符集编码
character-set-server=utf8mb4# 配置mysql服务器的比较规则
collation-server=utf8mb4_general_ci# 设置东八区时区
default-time_zone='+8:00'# 设置密码验证规则
default_authentication_plugin=mysql_native_password# 把表中数据导出到csv
# secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
# secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
# secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
secure_file_priv=/var/lib/mysql# 二进制日志过期清理时间
expire_logs_days=7# 日志配置
# ...# mysql接收来自客户端请求相关配置
[client]# 配置mysql接收来自客户端请求时的字符集编码
default-character-set=utf8mb4
重启 mysql 容器
docker restart mysql