Docker 安装 MySQL 5.7.44(Mac M4 适配版)
一、核心前提
MySQL 5.7 官方镜像已适配 arm64v8(M1/M2/M3/M4)架构,需指定 5.7.44 精确版本标签,避免拉取到默认最新版。
二、完整安装步骤
1. 拉取 MySQL 5.7.44 镜像(M4 专用)
bash
运行
perl
# 拉取 MySQL 5.7.44 官方镜像(arm64 适配)
docker pull mysql:5.7.44
# 验证镜像架构(确保是 arm64)
docker inspect mysql:5.7.44 | grep -i "Architecture"
# 输出 "Architecture": "arm64" 即适配 M4
2. 启动 MySQL 5.7.44 容器(带密码 + 端口映射)
bash
运行
ruby
# 1. 创建本地数据目录(持久化数据,避免容器删除丢失)
mkdir -p ~/mysql57/data
# 2. 启动容器(核心命令,替换密码后复制)
docker run -d \
--name mysql57 \
-p 3306:3306 \
-v ~/mysql57/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=你的密码 \ # 替换为自定义密码(如 123456)
-e MYSQL_INITDB_SKIP_TZINFO=1 \ # 解决 Mac 时区警告
mysql:5.7.44
参数说明
表格
| 参数 | 作用 |
|---|---|
--name mysql57 |
容器命名,方便后续操作 |
-p 3306:3306 |
主机 3306 端口映射到容器 3306 |
-v ~/mysql57/data:/var/lib/mysql |
本地目录挂载,持久化 MySQL 数据 |
MYSQL_ROOT_PASSWORD |
设置 root 密码(必须指定) |
MYSQL_INITDB_SKIP_TZINFO=1 |
跳过时区初始化,解决 Mac 下的启动警告 |
3. 验证容器启动状态
bash
运行
perl
# 查看容器状态(Up 表示运行中)
docker ps | grep mysql57
# 查看启动日志(无报错即正常)
docker logs -f mysql57
日志中出现 ready for connections 即启动成功。
4. 登录 MySQL 验证版本
bash
运行
csharp
# 登录容器内的 MySQL
docker exec -it mysql57 mysql -u root -p
# 输入密码后,查询版本(验证是否为 5.7.44)
SELECT VERSION();
输出 5.7.44 即安装成功!
三、常用操作指令
bash
运行
bash
# 停止 MySQL 容器
docker stop mysql57
# 启动 MySQL 容器
docker start mysql57
# 重启 MySQL 容器
docker restart mysql57
# 进入容器内部(调试/操作)
docker exec -it mysql57 bash
# 查看 MySQL 实时日志
docker logs -f mysql57
四、docker-compose 一键启动(推荐)
创建 docker-compose.yml 文件,内容如下:
yaml
ruby
version: '3'
services:
mysql57:
image: mysql:5.7.44
container_name: mysql57
ports:
- "3306:3306"
volumes:
- ~/mysql57/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=你的密码 # 替换为自定义密码
- MYSQL_INITDB_SKIP_TZINFO=1
restart: always # 开机自启
启动命令:
bash
运行
docker-compose up -d
五、避坑点(Mac M4 专属)
1. 端口冲突
若 3306 被占用,换端口启动(如 -p 3307:3306),登录时指定端口:
bash
运行
css
docker exec -it mysql57 mysql -u root -p -P 3307
2. 时区问题
启动时已添加 MYSQL_INITDB_SKIP_TZINFO=1,避免容器启动时报时区初始化错误。
3. 数据持久化
必须挂载 -v ~/mysql57/data:/var/lib/mysql,否则容器删除后数据会丢失。
4. 镜像拉取慢
配置 Docker 国内镜像加速(Docker Desktop → Settings → Docker Engine):
json
json
{
"registry-mirrors": [
"https://docker.xuanyuan.me/",
"https://docker.1ms.run"
]
}
修改后点击 Apply & Restart 生效。
六、卸载 / 重置(如需重新安装)
bash
运行
bash
# 停止并删除容器
docker stop mysql57 && docker rm mysql57
# (可选)删除本地数据(谨慎!会清空所有 MySQL 数据)
rm -rf ~/mysql57/data
# (可选)删除镜像
docker rmi mysql:5.7.44