Mac M1环境下Docker部署MySQL 5.7无法连接DataGrip求助
问题分析与解决方案
1. 修复Docker Compose配置文件(核心问题之一)
你的Docker Compose文件存在语法错误和配置混乱:mysqlsrv服务下混入了另一个Web服务的配置(build、80/443端口、depends_on: mysqlsrv),这会直接导致容器启动异常。修正后的配置如下:
version: '3' services: mysqlsrv: image: mysql:5.7 # M1架构必须指定平台,否则会因架构不兼容启动失败 platform: linux/amd64 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' # 指定原生认证插件,避免DataGrip连接时的认证兼容问题 MYSQL_DEFAULT_AUTH: mysql_native_password ports: - '3306:3306' volumes: - ../.docker/mysqlMySql:/var/lib/mysql networks: - app-network # 定义专属网络,避免端口冲突 networks: app-network: driver: bridge
2. M1架构适配要点
MySQL 5.7官方镜像无arm64版本,M1 Mac运行时必须通过platform: linux/amd64指定架构,否则容器可能启动失败或运行异常(这也是你之前流程繁琐的核心原因)。
3. DataGrip连接排查步骤
步骤1:验证容器状态与端口映射
执行命令确认容器正常运行:
# 查看容器状态 docker-compose ps # 检查3306端口占用情况 lsof -i :3306
确保mysqlsrv容器状态为Up,且3306端口被docker-proxy占用。
步骤2:原生客户端测试连接
绕过DataGrip,用MySQL原生客户端测试服务可用性:
mysql -h 127.0.0.1 -P 3306 -u root
如果能成功登录,说明MySQL服务正常,问题出在DataGrip配置;如果连接失败,回到容器配置排查。
步骤3:修正DataGrip连接配置
- 主机:填写
127.0.0.1(不要用localhost,避免套接字连接优先级高于TCP) - 端口:
3306 - 用户:
root - 密码:留空(对应
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes') - 点击「测试连接」前,先点击「下载缺失的驱动文件」,确保驱动版本与MySQL 5.7兼容
步骤4:禁用强制SSL连接
MySQL 5.7容器默认未开启SSL,DataGrip如果强制启用SSL会导致连接失败:
在DataGrip连接配置的「SSL」标签页,选择「使用SSL:否」。
4. 其他修复点
- 清理损坏的数据卷:如果之前容器启动异常,数据卷可能损坏,执行
docker-compose down -v删除数据卷后重新启动 - 再次确认Mac防火墙规则:确保允许Docker和DataGrip访问网络
内容的提问来源于stack exchange,提问作者Gabriel Boscaratto
相关产品推荐
相关产品推荐

