Docker启动Mysql实战——极简入门

344 阅读1分钟
  • mysql容器的最简启动
  • mysql容器的时区问题
  • mysql容器的数据持久化问题
  • mysql容器的配置文件持久化问题
  • mysql容器的sql_mode=only_full_group_by问题

一、docker启动mysql最简步骤

拉取mysql镜像

docker pull mysql:5.7.32

启动mysql容器

docker run --name mysql-demo -d -p 9906:3306 -e MYSQL_ROOT_PASSWORD=demo_123 mysql:5.7.32

--name 启动的容器名称

-d 后台运行

-e 环境变量替换,设置数据库root默认密码

-p{宿主机的端口}:{容器里的端口} 端口映射

参考:juejin.cn/post/684490…

二、设置mysql容器的【时区】、【数据持久化】、【配置文件持久化】

准备mysql配置文件

/data/mongcent/docker-config/mysql/conf/my.conf

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci

pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
datadir		= /var/lib/mysql
#log-error	= /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address	= 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO

sql_mode配置,避免操作sql语句的时候,报如下错误:

  • Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

完整启动脚本

docker run -d \
-p 9906:3306 \
-v /data/mongcent/docker-config/mysql/conf:/etc/mysql \
-v /data/mongcent/docker-config/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=demo_123 \
-e TZ='Asia/Shanghai' \
--name mysql-demo \
mysql:5.7.32

-d 后台运行

-p{宿主机的端口}:{容器里的端口} 端口映射

-v {宿主机目录}:{容器目录} 目录映射

-e 环境变量替换

--name 容器名称

mysql变量查询

--查看mysql的数据目录

SHOW GLOBAL VARIABLES LIKE "%Datadir%";

--查看bin_log状态

SHOW GLOBAL VARIABLES LIKE "%log_bin%";