插件窝 干货文章 docker运行mysql怎么配置

docker运行mysql怎么配置

MySQL PASSWORD ROOT Docker 610    来源:    2025-04-06

Docker 运行 MySQL 配置指南

基本运行命令

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

详细配置选项

1. 环境变量配置

环境变量 说明 示例
MYSQL_ROOT_PASSWORD 设置 root 用户密码 -e MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE 容器启动时创建的数据库 -e MYSQL_DATABASE=my_db
MYSQL_USER, MYSQL_PASSWORD 创建新用户并设置密码 -e MYSQL_USER=user -e MYSQL_PASSWORD=pass
MYSQL_ALLOW_EMPTY_PASSWORD 允许空密码 (危险) -e MYSQL_ALLOW_EMPTY_PASSWORD=yes
MYSQL_RANDOM_ROOT_PASSWORD 生成随机 root 密码 -e MYSQL_RANDOM_ROOT_PASSWORD=yes

2. 持久化数据存储

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

3. 自定义配置文件

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

4. 网络和端口配置

docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

5. 完整示例

docker run -d \
  --name mysql-server \
  -p 3306:3306 \
  -v /data/mysql:/var/lib/mysql \
  -v /data/mysql-conf:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD=strongpassword \
  -e MYSQL_DATABASE=app_db \
  -e MYSQL_USER=app_user \
  -e MYSQL_PASSWORD=userpassword \
  --restart unless-stopped \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

常用操作

进入 MySQL 容器

docker exec -it some-mysql mysql -uroot -p

备份数据库

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

恢复数据库

docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /path/to/backup.sql

注意事项

  1. 生产环境不要使用简单密码
  2. 重要数据一定要配置持久化存储
  3. MySQL 8.0 默认使用 caching_sha2_password 认证插件,某些旧客户端可能需要调整
  4. 可以通过 --character-set-server--collation-server 参数设置字符集

版本选择

  • mysql:latest - 最新稳定版
  • mysql:8.0 - MySQL 8.0 系列
  • mysql:5.7 - MySQL 5.7 系列 (旧版但稳定)

建议根据应用需求选择特定版本而非使用 latest 标签。