目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

mysql5.7 on docker

Linux

  • 使用 MySQL 5.7 docker 镜像
  • my.cnf 文件放置在宿主机/etc/mysql/下
  • 数据存储在宿主机 /data/mysql 下
  • 端口对外端口使用 50000
 1#拉取镜像
 2docker pull mysql:5.7
 3#mkdir /etc/mysql/
 4cat > /etc/mysql/my.cnf <<EOF 
 5[mysqld]
 6#skip-name-resolve
 7port = 3306
 8character-set-server=utf8mb4
 9collation-server=utf8mb4_unicode_ci
10skip-character-set-client-handshake=1
11default-storage-engine=INNODB
12max_allowed_packet = 500M
13explicit_defaults_for_timestamp=1
14long_query_time = 10
15EOF
16mkdir -p /data/mysql
17
18docker run --name mysql5.7 -v /etc/mysql:/etc/mysql/conf.d -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always -p 50000:3306 mysql:5.7
19#mysql5.7是指新mysql docker的名称
20#my-secret-pw是指mysql的root密码
21#mysql:5.7是指docker镜像的名称
22#端口映射-p 50000:3306

进入已启动的 MySQL docker

1docker exec -it mysql5.7 bash

查看 MySQL 日志

1docker logs mysql5.7

备份数据库 mysql5.7 是容器的名字

1mkdir -p /data/backup/
2docker exec mysql5.7 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /data/backup/all-databases.sql

Windows

 1# 拉取镜像
 2docker pull mysql:5.7
 3
 4# my.cnf文件(D:\Tools\DockerImage\mysql\one5000\config)
 5[mysqld]
 6#skip-name-resolve
 7port = 3306
 8character-set-server=utf8mb4
 9collation-server=utf8mb4_unicode_ci
10skip-character-set-client-handshake=1
11default-storage-engine=INNODB
12max_allowed_packet = 500M
13explicit_defaults_for_timestamp=1
14long_query_time = 10
15
16# 运行容器
17docker run -p 50000:3306 --name mysqlone50000 -v d:/Tools/DockerImage/mysql/one5000/config:/etc/mysql/conf.d -v d:/Tools/DockerImage/mysql/one5000/data:/var/lib/mysql -v d:/Tools/DockerImage/mysql/one5000/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone="+8:00"

作者:Soulboy