这个错误通常发生在 MySQL 容器启动时无法访问配置目录。以下是几种解决方案:
# 在宿主机上创建目录并设置权限
mkdir -p ./mysql/conf.d
chmod -R 644 ./mysql/conf.d
chown -R 1000:1000 ./mysql/conf.d # 1000是典型容器用户ID,根据实际调整
version: '3.8'
services:
mysql:
image: mysql:8.0
volumes:
- ./mysql/conf.d:/etc/mysql/conf.d:z # 添加:z或:Z标志用于SELinux
- mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
restart: always
volumes:
mysql_data:
如果不需自定义配置,可以移除 volumes 中 conf.d 的挂载:
volumes:
# 移除这行 - ./mysql/conf.d:/etc/mysql/conf.d
- mysql_data:/var/lib/mysql
可以将单个配置文件挂载而非整个目录:
volumes:
- ./my-custom.cnf:/etc/mysql/conf.d/my-custom.cnf
检查容器日志获取更多信息:
docker-compose logs mysql
如果使用 SELinux,尝试临时禁用测试:
sudo setenforce 0
确保使用的 MySQL 镜像版本支持该配置目录结构
希望以上解决方案能帮助您解决问题。如果问题仍然存在,请提供更多环境信息以便进一步诊断。