插件窝 干货文章 如何使用Docker来安装和配置MySQL数据库

如何使用Docker来安装和配置MySQL数据库

MySQL Docker 容器 PASSWORD 712    来源:    2025-04-30

使用Docker安装和配置MySQL数据库指南

1. 安装Docker

在开始之前,请确保您已在系统上安装了Docker:

2. 拉取MySQL镜像

从Docker Hub获取官方MySQL镜像:

docker pull mysql:latest

或指定版本(推荐):

docker pull mysql:8.0

3. 运行MySQL容器

基本运行命令

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

替换: - some-mysql 为您的容器名称 - my-secret-pw 为root用户密码 - tag 为MySQL版本标签(如8.0)

推荐的生产环境配置

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

4. 常用配置选项

环境变量

  • MYSQL_ROOT_PASSWORD: root用户密码(必需)
  • MYSQL_DATABASE: 容器启动时创建的数据库名称
  • MYSQL_USER: 创建的新用户
  • MYSQL_PASSWORD: 新用户的密码
  • MYSQL_RANDOM_ROOT_PASSWORD: 设置为yes时,为root生成随机密码
  • MYSQL_ONETIME_PASSWORD: 设置root用户为一次性密码

端口映射

  • -p 3306:3306: 将容器3306端口映射到主机3306端口

数据持久化

  • -v /host/path:/var/lib/mysql: 将MySQL数据目录挂载到主机

配置文件

  • -v /host/config:/etc/mysql/conf.d: 挂载自定义配置文件

5. 连接到MySQL容器

进入容器内的MySQL命令行

docker exec -it mysql-server mysql -uroot -p

从外部客户端连接

使用任何MySQL客户端工具(如MySQL Workbench)连接: - 主机: localhost (或Docker主机IP) - 端口: 3306 (或您映射的端口) - 用户名/密码: 您设置的值

6. 管理MySQL容器

查看运行中的容器

docker ps

停止容器

docker stop mysql-server

启动容器

docker start mysql-server

删除容器

docker rm mysql-server

7. 高级配置

自定义配置文件

创建my.cnf文件并挂载到容器:

mkdir -p /path/to/mysql/config
echo "[mysqld]
max_connections = 200
innodb_buffer_pool_size = 1G" > /path/to/mysql/config/my.cnf

然后运行容器时添加挂载:

-v /path/to/mysql/config:/etc/mysql/conf.d

设置时区

-e TZ=Asia/Shanghai

性能优化参数

在运行命令中添加:

--innodb_buffer_pool_size=1G --innodb_log_file_size=256M

8. 备份与恢复

备份数据库

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

恢复数据库

cat /path/to/backup/all-databases.sql | docker exec -i mysql-server mysql -uroot -p"$MYSQL_ROOT_PASSWORD"

9. 使用Docker Compose部署

创建docker-compose.yml文件:

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql-server
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: appdb
      MYSQL_USER: appuser
      MYSQL_PASSWORD: userpassword
    volumes:
      - mysql_data:/var/lib/mysql
      - ./mysql-config:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    restart: unless-stopped
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

volumes:
  mysql_data:

然后运行:

docker-compose up -d

10. 安全建议

  1. 不要使用简单的root密码
  2. 考虑使用MYSQL_RANDOM_ROOT_PASSWORD=yes生成随机密码
  3. 限制容器的网络访问(使用--network选项)
  4. 定期备份数据
  5. 保持MySQL镜像更新到最新版本

通过以上步骤,您应该能够成功使用Docker部署和管理MySQL数据库服务。