文章归档:https://www.yuque.com/u27599042/coding_star/nckzqa73g47hgz3x
docker search mysql
docker pull mysql
mkdir -p \
/home/docker/mysql/log \
/home/docker/mysql/data \
/home/docker/mysql/conf \
/home/docker/mysql/mysql-files
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d 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
docker rm -f 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 容器配置文件目录映射 /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
docker restart mysql