使用 docker mariadb 数据库,并进行初始化配置


官方链接:https://hub.docker.com/_/mariadb/

MariaDB 是 Mysql 的社区开发分支,旨在在 GUN GPL 下保持免费。

MariaDB 和 Mysql 使用起来几乎没有差别。

启动 mariadb 服务器实例

$ docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

说明:

  1. some-mariadb 是分配给容器的名称
  2. 设置环境变量 MYSQL_ROOT_PASSWORD 为 my-secret-pw 即设置 root 用户密码
  3. tag 是指定的标签

使用自定义的 mysql 配置文件

默认的初始化配置文件指定在 /etc/mysql/my.cnf 文件中及 /etc/mysql/conf.d 下的 .cnf 文件 如果使用我们自定义的配置文件,可以在本地编辑一个配置文件,然后挂载到 /etc/mysql/conf.d 下,注意,/etc/mysql/conf.d 下的 .cnf 文件优先。 示例:

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

环境变量

  • MYSQL_ROOT_PASSWORD -> 指定为 root 用户设置的密码,必需变量。
  • MYSQL_DATABASE -> 可选,指定容器启动时要创建的数据库的名称。如果提供了用户密码,则授予该用户对数据库的超级用户访问权限。
  • MYSQL_USER, MYSQL_PASSWORD -> 可选,创建新用户&其密码
  • MYSQL_ALLOW_EMPTY_PASSWORD -> 可选,这是一个可选变量。设置为yes允许以root用户的空白密码启动容器。(建议不要用)
  • MYSQL_RANDOM_ROOT_PASSWORD -> 可选,这是一个可选变量。设置yes为为root用户生成一个随机的初始密码(使用pwgen)。生成的root密码将被打印到stdout

容器初始化

在首次启动容器是,除了创建指定名称的数据库&使用设置的环境变量进行初始化外,它还会执行在 /docker-entrypoint-initdb.d 目录下发现的 .sh / .sql / / /.sql.gz 文件,文件将按字母顺序执行。

数据存储位置

推荐做法:在宿主机上创建一个数据目录,然后将 /var/lib/mysql 挂载。 例如:

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

后面,mysql 将在 /my/own/datadir 目录下写入数据文件。

其他更多,可参考官方文档:https://hub.docker.com/_/mariadb/