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

Laravel子域名部署时MySQL连接失败(SQLSTATE[HY000][2002])求助

Laravel数据库连接错误(SQLSTATE[HY000] [2002])解决思路

针对你遇到的无法连接127.0.0.1数据库的错误,以下是具体排查步骤:

  • 确认MySQL服务状态
    检查本地/服务器上的MySQL服务是否正在运行:

    • Linux系统执行:systemctl status mysql,如果未运行,启动服务:systemctl start mysql
    • Windows系统:打开「服务」面板,找到MySQL服务确认状态,未启动则手动启动
  • 验证端口监听情况
    你配置的DB_PORT是8889,需确认该端口确实被MySQL进程监听:

    • Linux执行:netstat -an | grep 8889 或 ss -tulpn | grep 8889
    • Windows执行:netstat -ano | findstr :8889
      如果没有结果,说明MySQL未监听该端口,需修改MySQL配置文件(my.cnf/my.ini)中的port参数为8889,重启服务
  • 检查MySQL绑定地址
    打开MySQL配置文件,查看*bind-address*参数:

    • 如果是本地部署,确保值为127.0.0.1或0.0.0.0(允许所有IP连接)
    • 如果是服务器上的远程数据库,需确认bind-address未限制为仅特定IP,且你的应用服务器有权限连接
  • 排查防火墙/安全组限制

    • 服务器本地防火墙:Linux检查ufw/iptables是否开放8889端口,例如ufw执行:ufw allow 8889;Windows可临时关闭防火墙测试
    • 云服务器安全组:如果是云主机,需在控制台添加入站规则,允许8889端口的TCP连接
  • 清除Laravel配置缓存
    Laravel会缓存配置文件,确保.env修改生效:
    执行命令:php artisan config:clear

  • 命令行直接测试数据库连接
    绕过Laravel直接测试数据库连通性,排除框架问题:
    执行:mysql -h 127.0.0.1 -P 8889 -u database_username -p,输入密码后如果能进入MySQL终端,说明数据库本身没问题,需排查Laravel配置;如果连接失败,问题出在数据库端

  • 检查数据库用户权限
    MySQL中localhost和127.0.0.1属于不同主机身份,确认你的数据库用户拥有从127.0.0.1连接的权限:
    登录MySQL执行:SELECT user, host FROM mysql.user;,如果用户的host是localhost,需添加'database_username'@'127.0.0.1'的权限:

    GRANT ALL PRIVILEGES ON database_name.* TO 'database_username'@'127.0.0.1' IDENTIFIED BY 'database_password';
    FLUSH PRIVILEGES;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:04:54