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

Laravel 10.43+Docker数据库连接异常求助(SQLSTATE[HY000] [2002])

Laravel + Docker 环境下 Auth::attempt() 数据库连接失败问题

我正在开发一个基于Laravel+Docker的应用,在使用Auth::attempt()方法进行登录认证时遇到了数据库连接问题。之前执行Laravel初始迁移时一切正常,数据表已经按预期创建完成。

.env 数据库配置

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password

database.php 中MySQL配置

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

docker-compose.yml 配置

version: "3.7"
services:

  #Laravel App
  app:
    container_name: "somadash1-app"
    build:
      args:
        user: laravel
        uid: 1000
      context: ./
      dockerfile: Dockerfile
    image: laravel10-app
    restart: unless-stopped
    working_dir: /var/www/
    volumes:
      - ../:/var/www:delegated
    networks:
      - laravelnetwork

  #Nginx Service
  nginx:
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - 8001:80
    volumes:
      - ../:/var/www:delegated
      - ./nginx/conf.d:/etc/nginx/conf.d
    networks:
      - laravelnetwork

  # MySQL Service
  mysql:
    image: 'mysql/mysql-server:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: 'password'
        MYSQL_ROOT_HOST: '%'
        MYSQL_DATABASE: 'laravel'
        MYSQL_USER: 'laravel'
        MYSQL_PASSWORD: 'password'
        MYSQL_ALLOW_EMPTY_PASSWORD: 1
    networks:
        - laravelnetwork

networks:
  laravelnetwork:
    driver: bridge

补充测试信息

  • 已通过多种方式测试数据库连接,包括直接进入MySQL容器,连接均正常。
  • 修改DB_HOST变量值会出现不同错误:
    • 设置为127.0.0.1时,错误信息:SQLSTATE[HY000] [2002] Connection refused,但使用Laravel Tinker执行User::find()方法可以正常查看用户数据。
    • 设置为localhost时,错误信息:SQLSTATE[HY000] [2002] No such file or directory,使用Tinker时也会出现相同错误。

我已经尝试解决这个问题两天了,网上找到的所有方案都无效,恳请大家提供帮助。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:45:55