MacBook Pro M1执行php artisan migrate遇SQLSTATE[HY000][2002]连接拒绝求助
解决MacBook Pro M1上Laravel迁移时SQLSTATE[HY000] [2002]连接拒绝问题
问题重现
执行php artisan migrate时收到错误:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = library-app and table_name = migrations and table_type = 'BASE TABLE')
.env配置:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=library-app DB_USERNAME=root DB_PASSWORD=password123
已尝试将DB_HOST改为localhost,问题未解决。
针对M1 MacBook的排查与解决方案
1. 确认MySQL服务正在运行
M1设备上MySQL的启动方式分两种情况:
- 若通过Homebrew安装:执行
brew services list,查看mysql服务状态是否为started。若未启动,执行brew services start mysql。 - 若通过官方DMG安装:打开系统偏好设置,找到底部的MySQL图标,确认服务处于启动状态,若未启动点击"Start MySQL Server"。
2. 验证MySQL端口与连接可用性
- 执行
lsof -i :3306,检查3306端口是否被MySQL占用。如果没有结果,说明MySQL可能使用了其他端口(比如部分M1环境下MySQL默认用33060),此时需要修改.env中的DB_PORT为对应端口,或者在MySQL配置文件中改回3306。 - 尝试用终端直接连接MySQL:
mysql -h 127.0.0.1 -P 3306 -u root -p,输入密码后看是否能成功登录。如果登录失败,说明用户权限或密码有问题,需要重置root密码或调整权限。
3. 修复M1特有的套接字连接问题
M1上使用localhost时,MySQL可能优先使用套接字而非TCP/IP连接,此时需要在.env中添加套接字路径:
DB_SOCKET=/tmp/mysql.sock
添加后执行php artisan config:clear清理配置缓存,再重新尝试迁移。
4. 确认目标数据库已创建
用MySQL客户端登录后,执行CREATE DATABASE IF NOT EXISTS library-app;,确保library-app数据库存在。
5. 重置Laravel配置缓存
修改.env后可能存在缓存未更新的情况,执行以下命令清理缓存:
php artisan config:clear php artisan cache:clear
内容的提问来源于stack exchange,提问作者UkiyoE
相关产品推荐
相关产品推荐

