在开始之前,请确保您已在系统上安装了Docker:
bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
从Docker Hub获取官方MySQL镜像:
docker pull mysql:latest
或指定版本(推荐):
docker pull mysql:8.0
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
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
: 挂载自定义配置文件docker exec -it mysql-server mysql -uroot -p
使用任何MySQL客户端工具(如MySQL Workbench)连接:
- 主机: localhost
(或Docker主机IP)
- 端口: 3306 (或您映射的端口)
- 用户名/密码: 您设置的值
docker ps
docker stop mysql-server
docker start mysql-server
docker rm mysql-server
创建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
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"
创建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
MYSQL_RANDOM_ROOT_PASSWORD=yes
生成随机密码--network
选项)通过以上步骤,您应该能够成功使用Docker部署和管理MySQL数据库服务。