Symfony 5提示SQLSTATE[HY000] [2002]连接被拒绝错误如何解决?
Symfony数据库连接拒绝问题解决方案
1. 修正端口配置错误
你当前的.env配置存在核心参数错误:MySQL默认服务端口为3306,5432是PostgreSQL的专属默认端口,你误将MySQL连接的端口写为5432,是触发连接拒绝的直接原因。
将.env文件的数据库配置替换为以下正确格式:
# 注释错误的旧配置 # DATABASE_URL="mysql://root:@127.0.0.1:5432/evergirls?serverVersion=13&charset=utf8" # 启用MySQL适配配置,serverVersion与你本地安装的MySQL版本保持一致即可 DATABASE_URL="mysql://root:@127.0.0.1:3306/evergirls?serverVersion=5.7&charset=utf8mb4"
如果本地安装的是MySQL 8.x版本,将serverVersion参数值修改为8.0即可,charset建议使用utf8mb4支持表情等全量Unicode字符
2. 验证MySQL服务运行状态
修改配置后先确认本地MySQL服务正常启动:
- Windows系统可在服务管理器中查找MySQL服务确认运行状态
- Linux环境运行命令
systemctl status mysql验证服务状态 - macOS通过Homebrew安装的MySQL可运行
brew services list查看运行状态 - 也可直接运行命令
mysql -u root -h 127.0.0.1 -P 3306测试直连,能正常进入MySQL命令行则服务无异常
3. Docker环境适配调整
如果你使用Docker部署Symfony项目,需要额外调整配置:
- 先确认docker-compose.yml中定义的MySQL服务名称,默认通常为
mysql - 将.env配置中的host部分替换为服务名:
DATABASE_URL="mysql://root:@mysql:3306/evergirls?serverVersion=5.7&charset=utf8mb4" - 数据库创建命令需要在PHP容器内部执行,不能直接在物理机环境运行
4. 清除配置缓存
修改配置后需清除Symfony旧缓存,避免旧配置依然生效:
php bin/console cache:clear
缓存清除完成后再执行数据库创建命令即可:
php bin/console doctrine:database:create
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

