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

Docker环境执行make:migrations遇SQLSTATE[HY000] [2002]连接拒绝

问题解决:Docker中PHP容器连接MySQL拒绝访问

核心原因

在Docker Compose默认网络里,每个容器是独立的网络节点。你的.env文件用127.0.0.1作为数据库地址,在PHP容器内部,这个地址指向的是PHP容器自身,而非MySQL容器,因此触发连接拒绝错误。

解决方案

1. 修改数据库连接配置

更新.env文件中的DATABASE_URL,将127.0.0.1替换为Docker Compose里MySQL服务的名称mysql:

DATABASE_URL="mysql://root:root@mysql:3306/user_database?serverVersion=8.0.39&charset=utf8mb4"

注意:此处密码root需与MySQL容器配置的MYSQL_ROOT_PASSWORD保持一致(你的配置中两者匹配)。

2. 重启服务生效配置

执行命令重启PHP容器(或整个Compose服务):

docker-compose restart php
# 或者重启所有服务
docker-compose down && docker-compose up -d

3. 验证连接

进入PHP容器重新执行迁移命令:

docker exec -it user-php php bin/console make:migrations

额外说明

你能通过docker exec和DBeaver连接数据库的原因:

  • docker exec直接进入MySQL容器时,属于容器本地连接,自然能访问;
  • DBeaver使用主机的127.0.0.1:3306,对应MySQL容器映射到主机的端口,属于主机到容器的外部访问,逻辑和容器内部网络不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:23:13