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
相关推荐
tongyiixiaohuang12 小时前
技术案例分享:金蝶云星空客户数据同步到MySQL的实现
android·数据库·mysql
运维全栈笔记13 小时前
K8S部署WordPress+MySQL:模块化YAML配置详解
服务器·mysql·docker·云原生·容器·kubernetes·服务发现
张青贤13 小时前
linux离线部署docker和docker-compose
linux·docker·docker-compose
Rick199314 小时前
mysql 慢查询如何快速定位
数据库·mysql
Zender Han14 小时前
Docker 部署 OpenClaw:从安装到日常使用的完整指南
docker·openclaw
Vect__14 小时前
MySQL的数据类型和约束
android·数据库·mysql
ChoSeitaku14 小时前
5.MySQL表的约束|空属性|默认值|列描述|主键|自增长|唯一键|外键
android·数据库·mysql
A_aspectJ15 小时前
【Java基础开发】基于 Java Swing +MySQL + JDBC 版实现图书管理系统
java·开发语言·mysql
杨浦老苏15 小时前
自托管网络监控工具LanLens
网络·docker·监控·群晖
剩下了什么16 小时前
docker-compose up -d --build 和 docker-compose up -d 和 docker-compose build 区别
docker·容器·eureka