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实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下任何变量都将无效:容器启动时,任何现有数据库都将保持不变。
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