docker 安装 mysql (单体架构)

文章归档: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

你可能感兴趣的:(小尾巴的编程知识星球,docker,mysql,架构,服务端,容器,web,Mysql)