You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac ARM64环境Docker启动MySQL5.7初始化脚本失败报错

解决Mac ARM64下Docker Compose部署MySQL 5.7初始化失败问题

问题原因

MySQL 5.7官方Docker镜像未适配ARM64架构,Mac ARM64设备运行时会通过QEMU模拟x86环境,这种模拟会触发终端交互相关的初始化错误,导致Can't initialize batch_readline报错。

解决方案

方案1:使用ARM64兼容的MySQL 5.7镜像

替换官方镜像为官方维护的多架构版本mysql/mysql-server:5.7,该镜像原生支持ARM64。修改后的Docker Compose配置如下:

mysql:
  image: mysql/mysql-server:5.7
  container_name: mysql
  environment:
    MYSQL_ROOT_PASSWORD: 'root'
    MYSQL_INITDB_SKIP_TZINFO: '1' # 规避时区初始化可能引发的兼容问题
  ports:
    - '3306:3306'
  volumes:
    - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    - mysql:/var/lib/mysql:rw

方案2:禁用终端交互模式

在Docker Compose配置中添加终端相关参数,或指定跳过交互的启动命令:

方式A:开启终端支持

mysql:
  image: mysql:5.7
  container_name: mysql
  environment:
    MYSQL_ROOT_PASSWORD: 'root'
  ports:
    - '3306:3306'
  volumes:
    - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    - mysql:/var/lib/mysql:rw
  stdin_open: true
  tty: true

方式B:指定无交互启动命令

mysql:
  image: mysql:5.7
  container_name: mysql
  environment:
    MYSQL_ROOT_PASSWORD: 'root'
  ports:
    - '3306:3306'
  volumes:
    - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    - mysql:/var/lib/mysql:rw
  command: ["mysqld", "--skip-name-resolve"]

方案3:修正初始化脚本权限

确保本地init.sql文件权限正常,避免容器内无法读取:

chmod 644 ./init.sql

验证步骤

  1. 清理原有容器与数据卷:
docker-compose down -v
  1. 应用修改后的配置启动服务:
docker-compose up -d
  1. 查看容器日志确认启动状态:
docker logs mysql

内容的提问来源于stack exchange,提问作者Vadim Filin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:50:24