PostgreSQL连接报错ECONNREFUSED:地址配置问题求助
解决PostgreSQL连接被拒绝的实用步骤
1. 修改PostgreSQL监听地址
PostgreSQL默认仅监听本地回环地址(127.0.0.1),这会导致其他IP无法连接:
- 找到PostgreSQL配置文件,路径通常为
/etc/postgresql/[你的PostgreSQL版本号]/main/postgresql.conf(例如10版本对应/etc/postgresql/10/main/postgresql.conf) - 使用编辑器打开(如
sudo nano 上述路径),找到listen_addresses配置项,将默认值localhost改为*(监听所有IP),或明确指定127.0.0.1,192.168.0.2 - 按
Ctrl+O保存、Ctrl+X退出,重启PostgreSQL服务:sudo systemctl restart postgresql
2. 验证PostgreSQL监听状态
执行命令ss -tlpn | grep postgres,查看输出中是否包含0.0.0.0:5432或192.168.0.2:5432。若仅显示127.0.0.1:5432,说明配置未生效,需检查配置文件路径是否正确。
3. 配置数据库用户连接权限
PostgreSQL通过pg_hba.conf控制用户连接权限,文件路径与postgresql.conf相同:
- 执行
sudo nano /etc/postgresql/[版本号]/main/pg_hba.conf打开文件,添加以下两行(替换括号内为你的实际信息):host [你的数据库名] [你的数据库用户名] 127.0.0.1/32 md5 host [你的数据库名] [你的数据库用户名] 192.168.0.2/32 md5 - 保存退出后,再次重启PostgreSQL服务。
4. 核对Sequelize配置细节
- 确认环境变量
DB_NAME、DB_USER、DB_PASS配置正确,可临时在代码中添加打印验证:console.log('数据库信息:', process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS); - 若应用与数据库在同一服务器,优先使用127.0.0.1作为host,避免内网IP带来的额外网络问题
- 修正
timezone配置:'Europe'为无效值,需改为具体时区(如'Europe/London')
5. 检查防火墙端口规则
Ubuntu 18.04默认使用ufw防火墙,执行sudo ufw status查看是否允许5432端口访问。若未配置,添加规则:sudo ufw allow 5432/tcp,然后重启防火墙:sudo ufw reload
内容的提问来源于stack exchange,提问作者chipikov_m
相关产品推荐
相关产品推荐

