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

使用VS Code远程容器时Laravel报SQLSTATE[HY000] [2002]连接拒绝错误

解决Laravel远程容器中MySQL连接被拒绝的问题

问题核心原因

在Docker Compose的虚拟网络环境中,每个服务对应独立容器,127.0.0.1指向Laravel应用容器自身,而非MySQL容器。Docker会自动为Compose配置中的服务创建DNS解析,需使用MySQL服务的名称mysql作为数据库主机地址。

具体修复步骤

1. 修改.env文件的数据库主机配置

将DB_HOST的值从127.0.0.1改为mysql,其他配置保持不变:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laragigs
DB_USERNAME=root
DB_PASSWORD=11111

2. 修正docker-compose.yml的MySQL配置

原配置中MYSQL_ROOT_HOST: "${DB_HOST}"会限制root用户仅能从127.0.0.1访问,导致Laravel容器无法连接。移除该配置(或设置为%允许所有主机访问):

mysql:
    image: 'mysql/mysql-server:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_DATABASE: '${DB_DATABASE}'
        MYSQL_USER: '${DB_USERNAME}'
        MYSQL_PASSWORD: '${DB_PASSWORD}'
        MYSQL_ALLOW_EMPTY_PASSWORD: 1

3. 重启容器使配置生效

在项目根目录执行以下命令:

docker-compose down
docker-compose up -d

同事部署指南

  • 克隆项目到本地
  • 复制项目中的.env文件(或从.env.example复制后修改为上述正确配置)
  • 运行docker-compose up -d启动所有服务容器
  • 进入Laravel应用容器(或使用docker-compose exec app bash),执行php artisan migrate完成数据库初始化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:50:21