1、MySQL Docker Hub
Docker Hubhttps://hub.docker.com/_/mysql
2、创建网络
# 使用网段 192.168.2.0/24
$ docker network create --subnet=192.168.2.0/24 mysql-net
3、创建数据卷
# 创建数据库节点1的数据卷
$ docker volume create mysql-data-1
# 创建数据库节点的配置文件目录
$ docker volume create mysql-conf
4、修改MySQL的配置文件
# 进入mysql配置文件目录
$ cd /var/lib/docker/volumes/mysql-conf/_data
# 编辑新增配置文件
$ vi mysqld.cnf
mysqld.cnf配置文件内容
[client]
default-character-set = utf8mb4 # 客户端数据默认字符集
[mysql]
default-character-set = utf8mb4 # 数据库默认字符集
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
wait_timeout=1200
interactive_timeout=1200
character-set-client-handshake = FALSE
character-set-server = utf8mb4 # 服务端默认字符集
collation-server = utf8mb4_unicode_ci # 连接层默认字符集
init_connect = 'SET NAMES utf8mb4' # 指定每次连接的字符集utf8mb4
max_connections = 2000 # 最大连接数
5、拉取和运行容器
# 拉取镜像文件
$ docker pull mysql:5.7.37
# 运行MySQL
$ docker run -d -p 3306:3306 --name=mysql-server-1 --net=mysql-net --ip 192.168.2.2 --privileged \
-e MYSQL_ROOT_PASSWORD=2mQaWl9 \
-v mysql-data-1:/var/lib/mysql \
-v mysql-conf:/etc/mysql/conf.d \
mysql:5.7.37
6、创建DB用户和数据库
create user 'test_rw'@'%' identified by 'test123456';
create database test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
grant all privileges on test_db.* to test_rw@'%';