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

Laravel Sail部署至服务器遇SQLSTATE[HY000] [2002]连接拒绝问题

解决方案:Laravel Sail 连接 MySQL 容器失败问题

核心问题分析

你的配置存在两处关键冲突:一是MySQL容器启动命令的权限跳过参数与环境变量初始化配置冲突,二是.env文件中配置项的引号可能导致参数解析异常,最终引发容器间连接失败。

修复步骤

1. 修正 MySQL 容器启动命令

docker-compose.yml中--skip-grant-tables参数会跳过权限校验,导致MYSQL_USER、MYSQL_PASSWORD等初始化环境变量无法生效,移除该参数:

mysql:
    image: 'mysql:8.0.36'
    command: --default-authentication-plugin=mysql_native_password
    ports:
        - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_ROOT_HOST: '%'
        MYSQL_DATABASE: '${DB_DATABASE}'
        MYSQL_USER: '${DB_USERNAME}'
        MYSQL_PASSWORD: '${DB_PASSWORD}'
        MYSQL_ALLOW_EMPTY_PASSWORD: 1
    restart: always
    volumes:
        - 'sail-mysql:/var/lib/mysql'
    networks:
        - sail

2. 清理旧数据卷并重建容器

之前的清理操作可能未彻底清除残留的数据库卷,执行以下命令完全重置:

# 停止容器并删除关联卷
sail down -v
# 删除命名卷
docker volume rm sail-mysql
# 重新启动并初始化容器
sail up -d

3. 修正 .env 文件配置

移除配置项的引号,避免参数解析错误:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=sail
DB_PASSWORD=password

4. 正确测试容器间连接

通过sail shell连接MySQL时,需指定容器名作为主机(容器内无本地socket):

# 进入Laravel容器
sail shell
# 连接MySQL容器
mysql -h mysql -u sail -p

若能成功连接,说明容器间网络正常,问题已解决。

5. 验证Laravel配置文件

确保config/database.php正确读取.env参数:

'mysql' => [
    'driver' => 'mysql',
    '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'),
    ]) : [],
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:01:05