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

Laravel执行php artisan migrate:reset报错,数据库连接问题求助

解决Homestead环境下Laravel migrate:reset 数据库连接拒绝的问题

嘿,我碰到过一模一样的问题!核心原因其实是你在本地终端执行artisan命令时,Laravel用的是本地.env配置,但Homestead的MySQL跑在虚拟机里,得搞清楚命令执行的环境或者修正配置才行。下面给你几个靠谱的解决办法:

1. 最省心的方式:进Homestead虚拟机里执行命令

Homestead本来就是让你在虚拟机环境里跑Laravel CLI操作的,毕竟数据库、PHP这些都是虚拟机里配置好的,操作步骤超简单:

  • 打开终端,进到你的Homestead目录(一般是~/Homestead)
  • 敲 vagrant ssh 就能进到虚拟机里
  • 切换到你的项目目录(默认是/home/vagrant/code/你的项目名)
  • 再执行 php artisan migrate:reset,这时候肯定能连上虚拟机里的MySQL,因为环境完全匹配

2. 非要在本地执行?那得修正.env配置

如果你想在本地终端直接跑命令,得把.env里的数据库配置改对,还要注意端口映射:

  • 打开项目根目录的.env文件,把数据库部分改成这样:
    DB_CONNECTION=mysql
    DB_HOST=192.168.10.10  # 就是你PHPStorm用的那个虚拟机IP,没错
    DB_PORT=33060          # 划重点!Homestead默认把虚拟机的3306映射到本地的33060,不是默认的3306
    DB_DATABASE=你的数据库名
    DB_USERNAME=homestead  # Homestead默认的数据库用户名,别乱改
    DB_PASSWORD=secret     # Homestead默认密码,也是固定的
    
  • 改完保存后,记得执行 php artisan config:clear 清一下配置缓存,不然Laravel可能还读旧配置
  • 再试 php artisan migrate:reset -v,应该就能正常连接了

3. 排查一些小坑

  • 先确认Homestead虚拟机是开着的:终端敲 vagrant status,显示running才对,没开的话就vagrant up启动
  • 检查本地防火墙有没有拦192.168.10.10的33060端口,有的话临时关了试试
  • 进虚拟机里看看MySQL服务跑没跑:敲 sudo systemctl status mysql,没跑的话就sudo systemctl start mysql

为啥PHPStorm能连但本地artisan不行?因为你PHPStorm已经配置对了IP和端口(应该用了33060),但本地.env里可能还是默认的DB_HOST=localhost或者DB_PORT=3306,自然连不上虚拟机里的MySQL啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:11:54