环境变量
关于 root 用户的密码
以下三者互斥
version: "3.8"
services:
db1:
image: mysql/mysql-server:5.7
environment:
MYSQL_ROOT_PASSWORD: QFedu123@ # root 用户密码
MYSQL_ALLOW_EMPTY_PASSWORD: true # 表示可以使用空密码
MYSQL_RANDOM_ROOT_PASSWORD: true # 表示使用的是随机密码
关于非 root 的 用户和密码及其权限
MYSQL_USER: shark # 指定用户
MYSQL_PASSWORD: QFedu123@ # 为指定的用户设置密码
如果这两个变量中的任何一个没有设置,另一个将被忽略。
如果两个变量都设置了:
- MYSQL_DATABASE没有设置,则创建用户时没有任何特权。
- MYSQL_DATABASE 设置了,则创建的用户对于此数据库有所有的权限(GRANT ALL)。
MYSQL_DATABASE
此变量允许您指定要在映像启动时创建的数据库的名称。 指定的数据库由 CREATE DATABASE IF NOT EXIST
语句创建,因此如果数据库已经存在,则该变量无效。
MYSQL_ROOT_HOST
默认情况下,MySQL创建 'root'@'localhost'
帐户。只能从容器内部连接该帐户。要允许来自其他主机的连接,请设置此环境变量。例如,值 172.17.0.1,这是默认的Docker网关IP,它允许来自运行容器的主机的连接。该选项仅接受一个条目,但允许使用通配符(例如 MYSQL_ROOT_HOST: "172.*.*.*"
或 MYSQL_ROOT_HOST: "%"
)。
MYSQL_LOG_CONSOLE
当变量为true(这是MySQL 8.0服务器容器的默认状态, 5.7 模式是 false)时,MySQL服务器的错误日志将重定向到stderr,以便错误日志进入Docker容器的日志中,并可以使用docker logs mysqld-container
命令查看。
数据库初始化目录,存放 *.sh
或者 *.sql
文件,作为初始化数据库之用
- /docker-entrypoint-initdb.d/
配置文件
- /etc/my.cnf
数据目录
- /var/lib/mysql