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
相关推荐
CodexDave4 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
王琦03187 小时前
生产环境中使用通用二进制包安装
mysql
BullSmall8 小时前
Anolis OS 8.10 完整安装 Docker CE(生产可用,解决 podman 冲突)
docker·容器·podman
蓝田~10 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
Herbert_hwt10 小时前
MySQL学习前言:关于MySQL的历史与当下学习的必要性
mysql
梦梦代码精11 小时前
开源AI应用平台BuildingAI解析:插件化架构、应用市场与热门案例
人工智能·机器学习·docker·开源
时间的拾荒人11 小时前
MySQL 视图详解
android·数据库·mysql
尽兴-12 小时前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表
IT瑞先生13 小时前
Docker快速部署Mysql的三种方法——实操篇
mysql·adb·docker
数据库小学妹13 小时前
MySQL在线DDL实战:ALGORITHM三种算法对比+gh-ost变更管理SOP
mysql·dba·数据库运维·在线ddl·mdl锁·sql变更管理