Laravel执行php artisan migrate报错SQLSTATE[HY000] [2002]连接拒绝求助
这问题我之前帮好几个开发者排查过,结合你提到的MAMP新版本升级背景,咱们一步步拆解可能的原因:
MySQL端口不匹配:MAMP从部分新版本开始(比如5.7后续版本),默认把MySQL的TCP端口从常用的3306改成了33060。而Laravel的
.env文件默认配置的是3306,这就直接导致连接失败。你可以打开MAMP的「偏好设置」→「MySQL」,查看当前的端口号,然后把.env里的DB_PORT改成对应的数值。MySQL服务未正常启动:新版MAMP可能不会默认自动启动MySQL服务,甚至偶尔会出现服务启动异常的情况。你先打开MAMP主面板,确认MySQL的状态是「Running」;如果没启动,手动点击启动按钮,或者重启整个MAMP试试。
连接方式与socket路径冲突:当Laravel的
DB_HOST设为localhost时,会优先尝试用Unix socket连接MySQL,但新版MAMP的socket路径可能发生了变化。最简单的解决方法是把.env里的DB_HOST改成127.0.0.1,强制使用TCP/IP连接;如果坚持要用socket连接,需要在config/database.php的mysql配置数组里添加:'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',数据库凭证不匹配:新版MAMP在首次启动时,可能会强制要求你设置新的MySQL root密码,而你
.env文件里的DB_PASSWORD还是旧的默认值。你可以去MAMP的MySQL偏好设置里确认当前的root密码,然后更新.env里的对应字段。数据库名称或schema配置错误:错误信息里显示
table_schema = table_atelier,你需要先确认MAMP的phpMyAdmin里已经创建了这个数据库,并且.env里的DB_DATABASE确实是table_atelier。另外你提到的schemaLength配置,要确保它放在config/database.php的mysql配置数组中,格式正确(比如'schemaLength' => 64),避免因为配置位置错误导致数据库连接逻辑异常。
总的来说,这类连接拒绝问题90%以上都是基础配置不匹配导致的,先从检查MySQL服务状态和.env里的核心数据库配置开始排查,基本都能解决。
内容的提问来源于stack exchange,提问作者Timothée

