Docker部署MySQL8.0

1. 创建数据卷,用来持久话数据

// MySQL配置储存卷
docker volume create mysql.conf
// MySQL数据储存卷
docker volume create mysql.data
// MySQL日志储存卷
docker volume create mysql.log

2. 环境变量(引用MySQL官方对Docker容器MySQL环境变量的描述

布尔变量包括 MYSQL_RANDOM_ROOT_PASSWORDMYSQL_ONETIME_PASSWORDMYSQL_ALLOW_EMPTY_PASSWORDMYSQL_LOG_CONSOLE ;通过将它们设置为任何非零长度的字符串来使它们为真。因此,将它们设置为例如“ 0 ”、 “ false ”或“ no ”不会使它们为假,而是实际上使它们为真。这是一个已知的问题。

MYSQL_RANDOM_ROOT_PASSWORD:当这个变量为真时(这是它的默认状态,除非 MYSQL_ROOT_PASSWORD 被设置或 MYSQL_ALLOW_EMPTY_PASSWORD 设置为真),当Docker容器启动时,会为服务器的root用户生成一个随机密码。密码打印到stdout容器中,可以通过查看容器的日志找到(请参阅启动 MySQL 服务器实例)。

MYSQL_ONETIME_PASSWORD:当变量为true时(这是它的默认状态,除非 MYSQL_ROOT_PASSWORD 设置或 MYSQL_ALLOW_EMPTY_PASSWORD 设置为true),root用户的密码设置为过期,必须更改才能正常使用MySQL。

MYSQL_DATABASE:此变量允许您指定要在映像启动时创建的数据库的名称。MYSQL_USER 如果用和 提供了用户名和密码 MYSQL_PASSWORD,则创建用户并授予对此数据库的超级用户访问权(对应于GRANT ALL)。指定的数据库由 CREATE DATABASE IF NOT EXIST语句创建,因此如果数据库已经存在,则该变量无效。

MYSQL_USER, MYSQL_PASSWORD: 这些变量一起用于创建用户并设置该用户的密码,并且该用户被授予对 MYSQL_DATABASE 变量指定的数据库的超级用户权限。MYSQL_USERMYSQL_PASSWORD 都是创建用户所必需的——如果两个变量中的任何一个未设置,则忽略另一个。如果两个变量都已设置但未设置 MYSQL_DATABASE ,则创建的用户没有任何权限。

笔记: 无需使用此机制来创建 root 超级用户,默认情况下创建超级用户时使用的密码由 和 的描述中讨论的任一机制设置 MYSQL_ROOT_PASSWORDMYSQL_RANDOM_ROOT_PASSWORD 除非 MYSQL_ALLOW_EMPTY_PASSWORD 为真。

MYSQL_ROOT_HOST:默认情况下,MySQL 创建 'root'@'localhost'帐户。此帐户只能从容器内部连接,如从容器内 连接到 MySQL 服务器中所述。要允许来自其他主机的 root 连接,请设置此环境变量。例如172.17.0.1默认值 Docker 网关 IP 允许来自运行容器的主机的连接。该选项只接受一个条目,但允许使用通配符(例如MYSQL_ROOT_HOST=172.*.*.* 或 MYSQL_ROOT_HOST=% )。

MYSQL_LOG_CONSOLE:当变量为 true 时(这是 MySQL 8.0 服务器容器的默认状态),MySQL 服务器的错误日志被重定向到stderr,以便错误日志进入 Docker 容器的日志,并且可以使用docker logs mysqld-container 命令查看。

笔记: 如果已经挂载了来自主机的服务器配置文件,则该变量无效(请参阅 有关绑定挂载配置文件的 持久数据和配置更改)。

MYSQL_ROOT_PASSWORD:此变量指定为 MySQL root 帐户设置的密码。

警告: 在命令行上设置 MySQL root 用户密码是不安全的。作为显式指定密码的替代方法,您可以使用密码文件的容器文件路径设置变量,然后从您的主机挂载一个文件,该文件在容器文件路径中包含密码。这仍然不是很安全,因为密码文件的位置仍然暴露在外。最好使用默认设置, MYSQL_RANDOM_ROOT_PASSWORD 并且 MYSQL_ONETIME_PASSWORD 两者都为真。

MYSQL_ALLOW_EMPTY_PASSWORD. 将其设置为 true 以允许使用 root 用户的空密码启动容器。

警告: 将此变量设置为 true 是不安全的,因为它将使您的 MySQL 实例完全不受保护,从而允许任何人获得完全的超级用户访问权限。最好使用默认设置, MYSQL_RANDOM_ROOT_PASSWORD 并且 MYSQL_ONETIME_PASSWORD 两者都为真。

3. 运行容器

docker run -d \
-p 3306:3306 \
-e MYSQL_ROOT_HOST=% \
-e MYSQL_ROOT_PASSWORD=123456789 \
--mount source=mysql.conf,destination=/etc/mysql \
--mount source=mysql.data,destination=/var/lib/mysql \
--mount source=mysql.log,destination=/var/log/mysql \
--name MySQL \
mysql:8.0

你可能感兴趣的:(Docker,MySQL,docker,mysql,数据库)