Docker部署MySQL报错:指定数据目录/var/lib/mysql/不可用
MySQL容器启动失败:数据目录不可用问题
环境信息
- macOS Monterey 12.7.1
- MacBook (Retina, 12-inch, Early 2016)
- 处理器:1.1 GHz 双核Intel Core m3
- Docker Desktop版本:4.25.0 (126437)
已尝试的解决方法
- 修改本地目录所有权和权限
- 调整Docker Desktop文件共享设置
- 通过Brew卸载并重新安装MySQL
- 修改docker-compose.yml中的启动命令
注:同一仓库/容器在同事的M1芯片MacBook上可正常运行,仅我的Intel芯片设备出现此问题
终端报错信息
appname-mysql | 2023-11-10T21:43:03.363441Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. appname-mysql | 2023-11-10T21:43:03.363657Z 0 [ERROR] [MY-010119] [Server] Aborting appname-mysql | 2023-11-10T21:43:03.363978Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.2.0) MySQL Community Server - GPL. appname-mysql | 2023-11-10T21:43:03.364727Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
docker-compose.yml相关配置
db: container_name: appname-mysql image: mysql:8 restart: always command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci ports: - '3306:3306' volumes: - ./mysql-dumps:/docker-entrypoint-initdb.d - ./mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 123456
解决方案
清理本地挂载的mysql目录
本地./mysql目录可能残留了之前MySQL运行的文件,或存在架构兼容的权限元数据问题。直接删除该目录:rm -rf ./mysql然后重新启动容器:
docker-compose up -d db容器会自动初始化新的数据目录,避免旧文件冲突。
指定Intel架构的MySQL镜像
由于你的设备是Intel芯片,明确拉取对应架构的镜像,避免默认镜像的架构兼容问题:
修改docker-compose.yml中的image字段:image: amd64/mysql:8验证Docker文件共享设置
打开Docker Desktop → 设置 → 资源 → 文件共享,确保项目所在的磁盘分区已被勾选,点击「应用&重启」使设置生效。改用Docker管理卷替代本地目录挂载
本地目录挂载易出现权限和文件系统兼容问题,改用Docker内置数据卷:
修改volumes配置:volumes: - ./mysql-dumps:/docker-entrypoint-initdb.d - mysql-data:/var/lib/mysql并在docker-compose.yml最顶层添加卷定义:
volumes: mysql-data:Docker会自动管理数据卷的权限和存储,规避本地文件系统的问题。
内容的提问来源于stack exchange,提问作者jennifermarie
相关产品推荐
相关产品推荐

