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

Laravel执行php artisan migrate时MySQL连接被拒绝求助

解决Laravel迁移时MySQL连接被拒绝的问题

我明白你在执行php artisan migrate时遇到了MySQL连接被拒绝的问题,试过切换DB_HOST到localhost也没解决,下面是几个你可以逐一排查的方向:

  • 确认MySQL服务是否正在运行
    这是最常见的诱因,先检查你的MySQL服务有没有启动。比如在Mac上用Homebrew安装的MySQL,可以用以下命令查看状态:

    brew services list | grep mysql
    

    如果显示stopped,就启动服务:

    brew services start mysql
    

    要是用的是MAMP/XAMPP这类集成环境,打开对应的控制面板确保MySQL服务处于开启状态。

  • 检查MySQL监听的端口是否匹配
    你的配置里用的是3306端口,但MySQL可能被配置成监听其他端口。可以用下面的命令查看实际监听的端口:

    sudo lsof -i :3306
    

    如果没有返回结果,说明MySQL没在3306端口监听。找到MySQL的配置文件(比如my.cnf或my.ini),修改port配置项为3306,或者同步到你的.env文件中。

  • 验证MySQL用户名和密码的有效性
    虽然你的.env里密码为空,但还是要确认root用户是否真的无需密码就能登录。试试用终端直接连接MySQL:

    mysql -u root -p
    

    按回车如果直接进入数据库,说明密码没问题;如果提示需要密码,就把正确的密码填到.env的DB_PASSWORD字段中。

  • 尝试使用Unix套接字连接
    有时候用IP或localhost连接失败,改用Unix套接字可能解决问题。在.env里添加套接字路径:

    DB_SOCKET=/tmp/mysql.sock
    

    不同环境下套接字路径可能不同,比如MAMP的路径是/Applications/MAMP/tmp/mysql/mysql.sock,你可以根据自己的环境调整。

  • 清除Laravel配置缓存
    Laravel有时会缓存旧的配置,即使修改了.env也不会立即生效。执行以下命令清除缓存:

    php artisan config:clear
    php artisan cache:clear
    

    之后再重新运行迁移命令试试。

  • 检查防火墙或安全软件是否拦截连接
    某些防火墙、杀毒软件可能会阻止PHP访问3306端口。可以暂时关闭这类软件,或者添加规则允许PHP与MySQL的连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:47:50