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
相关产品推荐
相关产品推荐

