Docker:docker安装MySQL并同步数据到本机

Docker:docker安装MySQL并同步数据到本机

先了解MySQL启动方式

MySQL启动是要设置密码的,因此去官方查看启动命令。
MySQL dockerhub地址:https://registry.hub.docker.com/_/mysql

# 管帆帆测试运行命令
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

# 参数解析
-e代表配置环境;
MYSQL_ROOT_PASSWORD此变量是强制性的,并指定将为MySQL超级用户帐户设置的密码

拉取MySQL镜像

我这里指定拉取5.7的MySQL版本

# MySQL镜像,TAG[5.7]
[root@localhost /]# docker pull mysql:5.7

MySQL数据持久化到本地

MySQL数据持久化问题,数据不能只存在容器中,不安全,需要同步到本地。

第一次启动,设置MYSQL_ROOT_PASSWORD

docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

参数解析
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置

查看目录挂载情况

Mounts信息

"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/mysql/conf",
                "Destination": "/etc/mysql/conf.d",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/home/mysql/data",
                "Destination": "/var/lib/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

本机目录查看

[root@localhost /]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
54d46f730f41d9aacb1c79e34cf8fbaa12b5fb7f2cb9b1d95a9632c8907a9b16
[root@localhost /]# cd /home/mysql/data
[root@localhost data]# ll
total 188484
-rw-r-----. 1 polkitd input       56 Jan  6 03:14 auto.cnf
-rw-------. 1 polkitd input     1680 Jan  6 03:14 ca-key.pem
-rw-r--r--. 1 polkitd input     1112 Jan  6 03:14 ca.pem
-rw-r--r--. 1 polkitd input     1112 Jan  6 03:14 client-cert.pem
-rw-------. 1 polkitd input     1680 Jan  6 03:14 client-key.pem
-rw-r-----. 1 polkitd input     1352 Jan  6 03:14 ib_buffer_pool
-rw-r-----. 1 polkitd input 79691776 Jan  6 03:33 ibdata1
-rw-r-----. 1 polkitd input 50331648 Jan  6 03:33 ib_logfile0
-rw-r-----. 1 polkitd input 50331648 Jan  6 03:14 ib_logfile1
-rw-r-----. 1 polkitd input 12582912 Jan  6 03:33 ibtmp1
drwxr-x---. 2 polkitd input     4096 Jan  6 03:14 mysql
drwxr-x---. 2 polkitd input     8192 Jan  6 03:14 performance_schema
-rw-------. 1 polkitd input     1676 Jan  6 03:14 private_key.pem
-rw-r--r--. 1 polkitd input      452 Jan  6 03:14 public_key.pem
-rw-r--r--. 1 polkitd input     1112 Jan  6 03:14 server-cert.pem
-rw-------. 1 polkitd input     1680 Jan  6 03:14 server-key.pem
drwxr-x---. 2 polkitd input     8192 Jan  6 03:14 sys
[root@localhost data]#

数据持久化

# 强制删除运行中的容器
docker rm rf 1d2db7256fa2

即使删除掉容器,本地数据依然存在。

MySQL环境变量:Environment Variables

变量名 含义
MYSQL_ROOT_PASSWORD 此变量是强制性的,并指定将为MySQL超级用户帐户设置的密码
MYSQL_DATABASE 此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(请参见下面),则将授予该用户对此数据库的超级用户访问权限(对应于授予ALL)。
MYSQL_USER,MYSQL_PASSWORD 这些变量是可选的,用于创建新用户和设置该用户的密码。对于MySQL_DATABASE变量指定的数据库,将授予该用户超级用户权限(参见上文)。创建用户需要这两个变量。请注意,没有必要使用此机制来创建超级用户,默认情况下,该用户将使用MySQL_ROOT_Password变量指定的密码创建该用户。
MYSQL_ALLOW_EMPTY_PASSWORD 这是一个可选变量。设置为非空值,如“YES”,允许以根用户的空白密码启动容器。注意:不建议将这个变量设置为YES,除非您真正知道自己在做什么,因为这将使MySQL实例完全不受保护,允许任何人获得完全的超级用户访问权限。
MYSQL_RANDOM_ROOT_PASSWORD 这是一个可选变量。设置为非空值,比如是,为根用户生成一个随机的初始密码(使用pwgen)。生成的根密码将打印到stdout(生成的根密码:.)。
MYSQL_ONETIME_PASSWORD 设置root(不是MySQL_USER中指定的用户!)用户在完成后即过期,迫使用户在第一次登录时更改密码。任何非空值都将激活此设置。注意:MySQL 5.6+只支持此特性。在MySQL5.5上使用此选项将在初始化期间抛出一个适当的错误。
MYSQL_INITDB_SKIP_TZINFO 默认情况下,入口点脚本会自动加载转换_tz()函数所需的时区数据。如果不需要,则任何非空值都将禁用时区加载。
上一篇:java-microservice-01-vue-03-data-and-method


下一篇:js基础