Amazon RDS(PostgreSQL)无法连接Django应用,报端口5432超时
PostgreSQL连接Django超时的排查方向
PostgreSQL服务未启动或监听地址限制
先确认PostgreSQL服务是否正常运行,再检查postgresql.conf中的listen_addresses参数——默认可能设为localhost,仅允许本地连接,远程主机无法访问。需将其改为*或明确指定Django应用所在主机的IP。
检查命令:sudo systemctl status postgresql grep listen_addresses /etc/postgresql/<你的版本号>/main/postgresql.conf数据库访问控制列表(pg_hba.conf)未授权
云服务商的入站规则放行后,数据库自身的访问控制列表可能仍拒绝连接。需在pg_hba.conf中添加允许Django主机IP的规则,示例:host <你的数据库名> <你的用户名> <Django主机IP>/32 scram-sha-256修改后重启PostgreSQL服务生效。
数据库主机本地防火墙未开放端口
即使云入站规则开放了5432端口,数据库主机的本地防火墙(如ufw、firewalld)可能仍拦截请求。执行对应命令开放端口:# Ubuntu/Debian系统 sudo ufw allow 5432/tcp # CentOS/RHEL系统 sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reloadDjango配置文件的主机地址错误
核对settings.py中DATABASES配置的HOST字段,确认是数据库的公网/内网IP,而非localhost或错误地址。示例正确配置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_database', 'USER': 'your_user', 'PASSWORD': 'your_password', 'HOST': '192.168.1.100', # 确保该地址准确指向数据库主机 'PORT': '5432', } }端口占用或PostgreSQL监听端口不符
检查5432端口是否被其他进程占用,或PostgreSQL配置的端口并非5432。查看命令:sudo netstat -tulpn | grep 5432 grep port /etc/postgresql/<你的版本号>/main/postgresql.conf
内容的提问来源于stack exchange,提问作者kylo74
相关产品推荐
相关产品推荐

