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

将Laravel网站从本地部署到生产服务器时遇SQL连接拒绝错误

Laravel部署生产服务器:SQLSTATE[HY000] [2002] Connection refused 解决办法

这个错误是Laravel无法连接到生产环境数据库导致的,以下是针对性排查和解决步骤:

  • 核对.env数据库配置
    确保生产环境.env配置与本地环境完全区分:

    • DB_HOST:优先填127.0.0.1而非localhost(避免套接字连接异常),远程数据库则填对应IP
    • DB_PORT:默认3306,需与数据库服务实际监听端口一致
    • DB_USERNAME、DB_PASSWORD:使用生产环境专属的数据库账号密码,不要复用本地配置
    • 修改后执行php artisan config:cache清除配置缓存,确保Laravel加载最新配置
  • 确认数据库服务运行状态
    登录生产服务器,检查MySQL/MariaDB服务是否正常运行:

    systemctl status mysql
    

    若服务未启动,执行启动并设置开机自启:

    systemctl start mysql
    systemctl enable mysql
    
  • 检查数据库用户权限
    确保生产数据库用户允许从当前服务器IP连接:

    1. 登录数据库控制台:mysql -u root -p
    2. 执行授权命令(替换占位符为实际信息):
      GRANT ALL ON your_database_name.* TO 'your_db_user'@'your_server_ip' IDENTIFIED BY 'your_db_password';
      FLUSH PRIVILEGES;
      

    本地数据库可将your_server_ip替换为localhost或127.0.0.1

  • 排查防火墙限制

    • 生产服务器开放3306端口:
      Ubuntu系统:
      ufw allow 3306
      ufw reload
      
      CentOS/RHEL系统:
      firewall-cmd --add-port=3306/tcp --permanent
      firewall-cmd --reload
      
    • 远程数据库需额外确认数据库服务器防火墙允许当前生产服务器IP访问3306端口
  • 检查本地套接字配置(可选)
    若DB_HOST设为localhost且用套接字连接:

    • 确认.env中DB_SOCKET路径正确,比如DB_SOCKET=/var/run/mysqld/mysqld.sock
    • 通过ls -l /var/run/mysqld/mysqld.sock检查套接字文件是否存在、权限是否正常

内容的提问来源于stack exchange,提问作者MIRZA AHMER Ahmiiii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:15:31