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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:55:20