docker配置启动Mysql

本文详细介绍了如何使用Docker拉取并启动MySQL 8.0.28镜像,设置环境变量,以及如何进入容器拷贝数据和配置文件。重点在于通过挂载本地目录实现数据持久化,并展示了my.cnf配置文件内容,包括时间区设置、最大连接数、数据目录等关键参数。最后展示了如何停止并重新启动容器,确保服务的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker拉取镜像并启动mysql容器

docker run  \
-p 33306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.28

启动docker容器后进入容器,拷贝数据以及配置文件

docker exec -it mysql bash

show variables like '%datadir%';


docker cp mysql:/var/lib/mysql  /mydata/mysql/data
docker cp mysql:/etc/mysql /mydata/mysql/conf

使用上面的mysql配置文件,挂载本地配置文件以及数据

docker stop mysql && docker rm mysql
docker run  --restart=always --privileged=true \
-p 33306:3306 \
--name mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/conf/conf.d:/etc/mysql/conf.d \
-v /mydata/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-d mysql:8.0.28

my.cnf配置文件:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000


default-time-zone='+08:00'
innodb_buffer_pool_size = 128M
port = 3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid

# 允许连接失败的次数。
max_connect_errors=10

#引擎
default-storage-engine=INNODB

log-bin = mysql-bin
# #设置保存时间
expire_logs_days=7

# #注意5.7以及更高版本需要配置本项:server-id=123454(自定义,保证唯一性); server-id 一般去ip后三位
server-id=138
# #binlog格式,有3种statement,row,mixed
binlog-format=ROW
# #表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1


# ##开启慢sql
slow_query_log=on
slow_query_log_file=/var/lib/mysql/slow-query.log
long_query_time=1


[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

以上便是docker拉取mysql镜像并挂载本地配置文件以及数据启动容器

<think>好的,我需要帮助用户在Docker Desktop中启动MySQL容器。首先,我应该回顾用户提供的引用内容,确保信息准确。根据引用[1],用户需要先安装Docker,然后拉取MySQL镜像。引用[2]提到切换到Linux容器并创建挂载目录,这很重要,因为默认可能是Windows容器,而MySQL通常运行在Linux环境。引用[3]给出了运行容器的命令,包括设置密码和端口映射。引用[4]补充了如何进入容器的步骤。 接下来,我需要按照步骤组织回答。首先确认Docker安装,然后拉取镜像。注意挂载目录的创建,这能持久化数据,避免容器删除后数据丢失。运行命令时,要正确使用参数,比如-e设置环境变量,-p端口映射,-d后台运行。还要提醒用户可能遇到的问题,比如端口冲突或权限问题。最后,验证容器是否运行,并进入容器进行管理。可能的问题包括无法连接或数据持久化失败,需要检查目录权限和命令是否正确。确保步骤清晰,用户能一步步跟随操作。</think>### 在 Docker Desktop 中启动 MySQL 容器的步骤 #### 1. 安装并启动 Docker Desktop - 确保已安装 Docker Desktop(Windows/macOS)或 Docker Engine(Linux)。从 [Docker 官网](https://www.docker.com/)下载并安装[^1]。 - 启动 Docker Desktop,确认右下角鲸鱼图标显示正常运行。若需切换容器类型,右键点击图标选择 **Switch to Linux containers**[^2]。 #### 2. 拉取 MySQL 镜像 在终端执行以下命令拉取最新版 MySQL 镜像: ```bash docker pull mysql:latest ``` #### 3. 创建本地挂载目录(可选,推荐用于数据持久化) 在宿主机(如 Windows)创建目录以持久化 MySQL 数据: ``` D:/dev/dockerData/mysql8/data # 数据文件 D:/dev/dockerData/mysql8/log # 日志文件 D:/dev/dockerData/mysql8/conf # 配置文件 ``` > **注意**:若目录不存在,容器启动时可能自动创建,但建议手动创建以控制权限[^2]。 #### 4. 启动 MySQL 容器 执行以下命令启动容器(根据需求调整参数): ```bash docker run --name mysql_docker \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 \ -p 33060:33060 \ -v D:/dev/dockerData/mysql8/data:/var/lib/mysql \ -v D:/dev/dockerData/mysql8/log:/var/log/mysql \ -v D:/dev/dockerData/mysql8/conf:/etc/mysql/conf.d \ -d mysql:latest ``` **参数说明**: - `--name mysql_docker`:容器名称 - `-e MYSQL_ROOT_PASSWORD=123456`:设置 root 用户密码 - `-p 3306:3306`:映射宿主机 3306 端口到容器 MySQL 默认端口 - `-v`:挂载目录实现数据持久化 - `-d`:后台运行容器[^3][^4] #### 5. 验证容器运行状态 在 Docker Desktop 的 **Containers** 列表查看 `mysql_docker` 状态是否为 **Running**,或终端执行: ```bash docker ps ``` #### 6. 进入容器(可选) 若需操作 MySQL 命令行,执行: ```bash docker exec -it mysql_docker /bin/bash ``` 进入容器后,通过 `mysql -u root -p` 登录数据库。 --- ### 常见问题排查 1. **端口冲突**:若宿主机 3306 端口被占用,修改 `-p 宿主机端口:3306`(如 `-p 3307:3306`)。 2. **权限问题**:挂载目录时若出现权限错误,在 Windows 的 Docker Desktop 设置中启用 **File Sharing** 并添加对应目录。 3. **容器启动失败**:检查日志 `docker logs mysql_docker`,常见原因包括密码未设置或目录路径错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值