vi docker-compose.yml
version: '3'
services:
mysql:
restart: always
image: "mysql:5.7.32"
container_name: mysql57
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- /data/mysql/db:/var/lib/mysql
- /data/mysql/conf/my.cnf:/etc/mysql/my.cnf
- /data/mysql/init:/docker-entrypoint-initdb.d/
my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
init.sql
init.sql 可以放置在 /data/mysql/init 目录,初始化脚本,非必须。
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
create database test;
use test;
create table user
(
id int auto_increment primary key,
username varchar(64) unique not null,
email varchar(120) unique not null,
password_hash varchar(128) not null
);
insert into user values(1, "admin","admin@qq.com","passwd");
insert into user values(2, "zhangsan","zhangsan@qq.com","passwd");
insert into user values(3, "lisi","lisi@qq.com","passwd");
docker-compose up -d
docker-compose down