Laravel执行php artisan migrate时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

