Skip to main content

mysql介绍

镜像

docker pull mysql:5.7.25     118.16 MB



官方文档 :https://hub.docker.com/_/mysql?tab=description&page=1&name=5.

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p 3309:3306 -d mysql:5.7.25

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=video -p 3308:3306 -d mysql:5.7.25

挂载本地文件:

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

-v /my/own/datadir:/var/lib/mysql命令的一部分/my/own/datadir从基础主机系统的目录挂载到/var/lib/mysql容器内部,默认情况下,MySQL将在该目录中写入其数据文件。

使用自定义MySQL配置文件

MySQL的默认配置可以在中找到 /etc/mysql/my.cnf,其中可以包含!includedir其他目录,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。请检查mysql映像本身中的相关文件和目录以获取更多详细信息。

如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以这样启动mysql容器(请注意,此命令仅使用自定义配置文件的目录路径):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这将启动一个新的容器some-mysql,其中MySQL实例从采用混合启动设置/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf,与后者采取优先次序设置。

没有cnf文件的配置 可以将许多配置选项作为标志传递给mysqld。这将使您可以灵活地自定义容器,而无需cnf文件。例如,如果您想更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),请运行以下命令:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果您想查看可用选项的完整列表,请运行:

$ docker run -it --rm mysql:tag --verbose --help

环境变量

启动mysql映像时,可以通过在docker run命令行上传递一个或多个环境变量来调整MySQL实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下任何变量都将无效:容器启动时,任何现有数据库都将保持不变。

另请参阅https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html,以获取MySQL本身尊重的环境变量的文档(尤其是像这样的变量MYSQL_HOST,与该图像一起使用时会引起问题) )。

MYSQL_ROOT_PASSWORD

此变量是必需变量,它指定将为MySQL root超级用户帐户设置的密码。在上面的示例中,将其设置为my-secret-pw。

MYSQL_DATABASE

该变量是可选的,并允许您指定要在映像启动时创建的数据库的名称。如果提供了用户名/密码(请参阅下文),则将授予该用户对该数据库的超级用户访问权限(对应于GRANT ALL)。

MYSQL_USER, MYSQL_PASSWORD

这些变量是可选的,与创建新用户和设置该用户的密码一起使用。该MYSQL_DATABASE变量将为该用户授予超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。

请注意,无需使用此机制来创建根超级用户,该用户默认情况下是使用MYSQL_ROOT_PASSWORD变量指定的密码创建的。

MYSQL_ALLOW_EMPTY_PASSWORD

这是一个可选变量。设置为非空值,例如yes,以允许容器以root用户的空白密码启动。注意:yes除非您真的知道自己在做什么,否则不建议将此变量设置为,因为这将使您的MySQL实例完全不受保护,从而使任何人都可以获得完全的超级用户访问权限。

MYSQL_RANDOM_ROOT_PASSWORD

这是一个可选变量。设置为非空值,例如yes,以为root用户生成一个随机的初始密码(使用pwgen)。生成的root密码将被打印到stdout(GENERATED ROOT PASSWORD: .....)。

MYSQL_ONETIME_PASSWORD

初始化完成后,将root用户(不是MYSQL_USER!中指定的用户)设置为过期用户,从而在首次登录时强制更改密码。任何非空值都将激活此设置。注意:仅MySQL 5.6+支持此功能。在MySQL 5.5上使用此选项将在初始化期间引发适当的错误。

MYSQL_INITDB_SKIP_TZINFO

默认情况下,入口点脚本会自动加载该CONVERT_TZ()功能所需的时区数据。如果不需要,则任何非空值都将禁用时区加载。

创建数据库转储

大多数普通工具都可以使用,尽管在某些情况下它们的使用可能会有些麻烦,以确保它们可以访问mysqld服务器。确保这一点的一种简单方法是docker exec在同一容器中使用和运行该工具,类似于以下内容:

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

从转储文件还原数据

用于还原数据。您可以使用docker exec带-i标志的命令,类似于以下内容:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql