docker compose 部署mysql数据库

快速参考

官方镜像说明:https://hub.docker.com/_/mysql

docker-compose.yml

version: "3"
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    hostname: mysql
    ports:
      - 3306:3306
    volumes:
      - /home/mysql/data:/var/lib/mysql
      - /home/mysql/conf/my.cnf:/etc/my.cnf
      - /etc/localtime:/etc/localtime
    restart: on-failure
    logging:
      driver: "json-file"
      options:
        tag: mysql
    cap_add:
      - ALL
    environment:
      MYSQL_ROOT_PASSWORD: 'yourpasswd'

my.cnf

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
character-set-client-handshake=FALSE
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

环境变量说明:

环境变量
启动镜像时,您可以通过在命令行上传递一个或多个环境变量来调整 MySQL 实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下变量都不会产生任何影响:任何预先存在的数据库在容器启动时将始终保持不变。mysqldocker run

另请参阅 https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html 以获取MySQL本身遵循的环境变量的文档(尤其是像,当与此图像一起使用时已知会导致问题的变量)。MYSQL_HOST

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

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

MYSQL_USER,MYSQL_PASSWORD
这些变量是可选的,与创建新用户和设置该用户的密码结合使用。此用户将被授予对变量指定的数据库的超级用户权限(见上文)。这两个变量都是创建用户所必需的。MYSQL_DATABASE

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

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

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

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

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

posted @ 2023-08-23 17:49  蒲公英PGY  阅读(369)  评论(0编辑  收藏  举报