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

Laravel项目无法连接MySQL容器:SQLSTATE[HY000][2002]地址解析失败

解决Docker部署Laravel时数据库迁移的SQLSTATE[HY000] [2002]主机解析错误

以下是针对性的排查和解决步骤:

  • 确认容器网络连通性

    1. 先检查mysql容器状态:docker-compose ps mysql,确保状态为Up
    2. 进入php-fpm容器测试mysql主机连通性:docker-compose exec php-fpm ping mysql,如果ping不通,说明网络隔离问题
    3. 检查docker-compose.yml的网络配置,确保php-fpm和mysql服务在同一个自定义网络中,示例配置:
      networks:
        app-network:
          driver: bridge
      
      services:
        php-fpm:
          # 其他配置...
          networks:
            - app-network
        mysql:
          # 其他配置...
          networks:
            - app-network
      
  • 验证Laravel配置生效

    1. 进入php-fpm容器查看.env文件:docker-compose exec php-fpm cat .env,确认DB_HOST=mysql无拼写错误
    2. 清除Laravel配置缓存:docker-compose exec php-fpm php artisan config:clear,避免旧配置残留
  • 确保mysql容器完全启动

    1. 查看mysql启动日志:docker-compose logs mysql,确认日志中出现ready for connections,说明服务初始化完成
    2. 在docker-compose.yml中给php-fpm添加启动等待逻辑,避免mysql未就绪时发起连接:
      php-fpm:
        depends_on:
          - mysql
        command: sh -c "while ! nc -z mysql 3306; do sleep 1; done; php-fpm"
      
  • 验证mysql容器配置匹配

    1. 检查docker-compose.yml中mysql的环境变量,确保MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD与Laravel的.env配置完全一致
    2. 在php-fpm容器中直接用mysql命令测试连接:docker-compose exec php-fpm mysql -h mysql -u 你的数据库用户名 -p 你的数据库名,如果能成功登录,说明网络和权限无问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:34:54