Docker 安装 MySQL 5.7.44(Mac M4 适配版)

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
相关推荐
列星随旋12 分钟前
MySQL面经整理
数据库·mysql
是一个Bug36 分钟前
MySQL 核心知识梳理:从底层原理到实战优化
mysql
minji...1 小时前
MySQL数据库 (四) MySQL的数据类型,tinyint,float,decimal,枚举enum和集合set
数据库·mysql·tinyint·enum·decimal·varchar·bit
todoitbo2 小时前
从 MySQL 到 KingbaseES:Database、Schema、User 一次讲透
数据库·mysql·国产数据库·kingbasees
梦想的颜色2 小时前
硬核|Docker从入门到精通:镜像构建、仓库推送、Compose编排、生产部署全攻略
运维·服务器·docker·容器·部署·环境·镜像
千云3 小时前
100w大表0停机回滚:我们为什么放弃Undo Log,选择表名切换?
数据库·后端·mysql
SXJR3 小时前
使用docker 部署向量数据库Milvus
数据库·docker·容器·milvus·向量数据库
AC赳赳老秦3 小时前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
前进的李工3 小时前
MySQL性能优化:索引与子查询实战技巧
数据库·sql·mysql·性能优化
段ヤシ.3 小时前
回顾Java知识点,面试题汇总Day13:数据库MySQL(持续更新)
java·数据库·mysql