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

Docker部署MySQL镜像无法启动数据库问题求助

MySQL容器无法启动服务(Apple M2 + macOS Ventura)

问题现象

1. Docker Compose配置

db:
    image: "mysql:8.0.33"
    container_name: mywebsite-sql
    volumes:
      - .docker/mysql:/var/lib/mysql/
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}

2. 容器运行异常

执行docker compose up后容器显示运行状态,但内部MySQL服务未启动,容器日志输出:

2023-11-26 23:22:45+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
2023-11-26 23:22:46+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'

进入容器执行mysql命令时报错:

sh-4.4# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

手动在容器内启动mysqld时出现以下错误:

sh-4.4# mysqld
2023-12-05T23:11:02.618578Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2023-12-05T23:11:02.626541Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33) starting as process 61
2023-12-05T23:11:02.631689Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2023-12-05T23:11:02.667038Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2023-12-05T23:11:02.667419Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2023-12-05T23:11:02.667481Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-12-05T23:11:02.669140Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33)  MySQL Community Server - GPL.

补充说明

即使不挂载本地卷,直接执行官方文档命令docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest,也会出现相同问题,设备为Apple M2。

解决方法

  • 使用适配ARM架构的MySQL镜像:Apple M2为ARM64架构,部分官方镜像存在兼容性问题,可改用多架构支持的镜像mysql/mysql-server:8.0.33,或指定ARM专属标签mysql:8.0.33-arm64。更新后的compose配置示例:

    db:
      image: "mysql/mysql-server:8.0.33"
      container_name: mywebsite-sql
      volumes:
        - .docker/mysql:/var/lib/mysql/
      restart: unless-stopped
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    
  • 清理损坏的本地数据目录:如果挂载的本地目录.docker/mysql存在损坏数据,先删除该目录:

    rm -rf .docker/mysql
    

    之后重新启动容器,让MySQL初始化新的合法数据目录。

  • 检查Docker文件共享权限:打开Docker Desktop → 设置 → Resources → File Sharing,确保项目所在目录已添加到共享列表,且权限正常。

  • 禁用新虚拟化框架(可选):部分M系列Mac用户反馈,关闭Docker的新虚拟化框架可解决文件系统相关问题:打开Docker Desktop → 设置 → Features in development,取消勾选"Use the new Virtualization framework",重启Docker后再尝试启动容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:12:54