Debian 中 PostgreSQL 网络配置步骤
一 基础准备与配置文件路径
- 安装软件包:sudo apt update && sudo apt install postgresql postgresql-contrib。
- 配置文件路径:/etc/postgresql/{version}/main/,核心文件为 postgresql.conf 与 pg_hba.conf(将 {version} 替换为实际版本,如 14、15)。
- 服务管理:sudo systemctl start|stop|restart|status postgresql。
- 日志位置:/var/log/postgresql/,常见文件为 postgresql-{version}-main.log,可用 tail -f 实时查看。
二 启用远程访问的核心配置
- 修改 postgresql.conf:设置监听地址与端口
- listen_addresses = ‘*’(或指定内网接口如 ‘192.168.1.10,127.0.0.1’)
- port = 5432
- 修改 pg_hba.conf:添加客户端认证规则(示例为允许全网密码登录,生产环境请收紧网段并使用强认证)
- host all all 0.0.0.0/0 md5
- 如需 IPv6:host all all ::/0 md5
- 使配置生效:sudo systemctl restart postgresql。
三 防火墙与云安全组放行
- UFW:sudo ufw allow 5432/tcp;如需仅内网:sudo ufw allow from 192.168.1.0/24 to any port 5432/tcp。
- firewalld:sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload。
- 云服务器:在控制台安全组放行 TCP 5432,来源限制为应用所在网段/VPC。
四 连接测试与常见问题排查
- 本机测试:psql -h 127.0.0.1 -U postgres -p 5432
- 远程测试:psql -h 服务器IP -U your_user -d your_db -p 5432
- 服务状态:sudo systemctl status postgresql;未运行则 sudo systemctl start postgresql。
- 日志定位:tail -f /var/log/postgresql/postgresql-{version}-main.log(关注 FATAL/ERROR 与认证失败信息)。
- 密码与认证:若切换为 md5/scram-sha-256,确保用户已设置密码(ALTER USER … WITH PASSWORD ‘…’;),并在 pg_hba.conf 使用对应方法。
五 安全加固建议
- 限制来源网段:pg_hba.conf 中使用精确网段(如 192.168.1.0/24),避免使用 0.0.0.0/0;必要时仅开放白名单。
- 使用强认证:优先 scram-sha-256,避免使用 trust;为应用创建最小权限专用角色与数据库。
- 加密传输:启用 SSL/TLS(postgresql.conf 中配置 ssl = on 并部署服务器证书),防止明文传输。
- 最小暴露面:如无公网需求,仅监听内网接口;端口仅对受控来源开放。