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

Laravel迁移正常但页面访问报MySQL连接错误(多Vagrant环境)

解决应用虚拟机无法连接数据库的SQLSTATE[HY000] [2003] (13)错误

嘿,这个错误我之前碰到过好几次,结合你的情况来看,核心问题是权限被拒绝(错误码里的(13)就是明证),不是网络不通——毕竟你已经能通过Windows上的HeidiSQL、SSH里的php artisan migrate --seed成功连接数据库了对吧?问题出在应用所在虚拟机的本地权限限制上,下面是一步步排查和解决的方法:

1. 先排查SELinux限制(最常见原因)

CentOS7默认开启SELinux,它会严格限制Web服务(不管是Apache还是Nginx)发起对外网络连接的行为,而你用SSH执行migrate时是用的命令行PHP,和Web服务器的PHP进程处于不同的SELinux上下文,所以不会受限制。

  • 先临时关闭SELinux验证(只是测试用,别一直关着):

    sudo setenforce 0
    

    刷新应用页面,如果能正常连接数据库,那肯定是SELinux的锅。

  • 永久允许Web服务连接数据库(更安全的正确做法):
    不管是Apache还是Nginx,都用这个命令(SELinux把Nginx归到httpd相关的上下文规则里):

    sudo setsebool -P httpd_can_network_connect_db on
    

    加-P是让这个设置重启后依然生效。

2. 检查应用虚拟机的防火墙出站规则

虽然你能从外部(Windows)和SSH连接数据库,但应用虚拟机的firewalld可能限制了Web服务进程的出站连接:

  • 先查看当前防火墙规则:
    sudo firewall-cmd --list-all
    
  • 如果没有允许到3306端口(MySQL默认端口)的出站规则,就添加一下:
    可以直接开放所有到3306的连接:
    sudo firewall-cmd --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload
    
    或者更精准地只允许连接数据库虚拟机的IP:
    sudo firewall-cmd --add-rich-rule='rule family="ipv4" destination address="192.168.3.16" port port="3306" protocol="tcp" accept' --permanent
    sudo firewall-cmd --reload
    

3. 确认应用的数据库配置加载情况

虽然你migrate能成功,但要确保Web服务器加载的数据库配置和命令行用的是同一个:

  • 检查应用根目录下的.env文件,确认DB_HOST是192.168.3.16,DB_PORT是3306,DB_USERNAME和DB_PASSWORD没有写错。
  • 注意:如果用的是Apache,修改.env后需要重启Apache才能让配置生效:
    sudo systemctl restart httpd
    
    如果是Nginx,重启php-fpm就行:
    sudo systemctl restart php-fpm
    

4. 验证Web服务器对.env文件的读取权限

有时候Web服务器的进程用户(比如apache、nginx或者www-data)没有权限读取.env文件,导致数据库配置没加载,自然连不上:

  • 先查看.env文件的权限和所属用户:
    ls -la .env
    
  • 给Web服务器用户加上读取权限:
    如果是Apache:
    sudo chown apache:apache .env
    sudo chmod 640 .env
    
    如果是Nginx,把用户换成nginx或者www-data就行:
    sudo chown nginx:nginx .env
    sudo chmod 640 .env
    

按这个顺序排查下来,基本上就能解决问题了——毕竟你已经确认网络是通的,核心就是应用所在虚拟机的本地权限限制在搞鬼。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:51:22