cPanel部署Laravel8连接MySQL出现Connection refused错误如何解决?
Laravel 8 cPanel 部署MySQL连接失败排查
两类报错对应不同的连接问题,按以下步骤排查即可:
基础规则校验
cPanel环境的数据库配置和本地环境有默认差异,首先核对以下基础项:
- cPanel默认禁止站点使用
root账号连接数据库,你需要登录cPanel后台进入「MySQL数据库」模块,创建独立的数据库账号,将账号绑定到project_db并授予全量权限 - cPanel生成的数据库名、数据库账号名都会自动拼接你的cPanel账户前缀,比如cPanel账户名为
test,则实际数据库名为test_project_db,账号名为test_你设置的账号名,需要替换.env中对应的本地配置值 - 确认cPanel后台「服务状态」中的MySQL/MariaDB服务处于正常运行状态
针对两类报错的修复方案
报错1:SQLSTATE[2002] Connection refused(DB_HOST=127.0.0.1时触发)
该报错是TCP连接请求被拒绝,修复方式:
- 进入cPanel「远程MySQL」页面,将
127.0.0.1添加到允许访问的IP白名单 - 确认.env中DB_PORT配置为cPanel MySQL实际监听端口,默认是3306,部分服务商可能会修改默认端口,可在cPanel面板的数据库说明页查询端口信息
报错2:SQLSTATE[2002] No such file or directory(DB_HOST=localhost时触发)
该报错是PHP无法找到MySQL的UNIX套接字文件,修复方式:
- 登录cPanel查看PHP信息,找到
pdo_mysql.default_socket字段对应的套接字路径,常见路径为/var/lib/mysql/mysql.sock、/tmp/mysql.sock - 在.env文件中新增套接字配置即可:
DB_SOCKET=你查询到的实际套接字路径
生效操作
所有配置修改完成后,执行php artisan config:clear清除Laravel配置缓存,再测试数据库连接即可。
内容的提问来源于stack exchange,提问作者my name is
相关产品推荐
相关产品推荐

