PostgreSQL 与 5432 端口
5432 是 PostgreSQL 的默认监听端口,同样被 Greenplum、TimescaleDB 等兼容分支沿用。客户端连接需要两处配置同时放行:postgresql.conf 中的 listen_addresses 决定监听哪些地址,pg_hba.conf 决定哪些来源可以用哪种认证方式登录。加密并不意味着安全,公网可达的 5432 加上弱口令,仍会在数小时内被扫描与爆破。
基本信息
| 服务 | PostgreSQL 及兼容分支 |
|---|---|
| 协议 | TCP(可叠加 TLS) |
| 配置文件 | postgresql.conf 与 pg_hba.conf(两者必须配合) |
| 权限要求 | superuser 管理,业务账号按库与 schema 授权 |
| 常用客户端 | psql、应用驱动(JDBC、psycopg 等) |
| 安全等级 | 仅本机或应用网段,禁止公网 |
典型使用场景
- 业务应用连接数据库,内网直连并按库授权
- 只读副本承接报表与查询流量,减轻主库压力
- 备份与恢复:逻辑备份与物理副本结合使用
- 跨版本迁移与升级演练,先在隔离环境验证
- 开发与测试环境对接,使用独立账号与独立库
连接与监听检查
连接与监听检查
ss -lntp | grep 5432 # 确认监听地址是 127.0.0.1 还是全网卡
psql -h 127.0.0.1 -p 5432 -U postgres -c 'SHOW port;' # 本机确认端口与可登录
psql -h 10.0.1.30 -p 5432 -U app -d appdb -c 'SELECT 1;' # 从应用侧验证网络与认证
psql -h 10.0.1.30 -U app -c 'SHOW ssl;' # 确认是否启用 TLS
ss -lntp | grep 5432 | wc -l # 快速确认监听条目数量,排查多实例访问控制两处联动
| 配置项 | 作用 | 常见错误 |
|---|---|---|
| listen_addresses | 决定监听哪些网卡地址 | 写成星号导致全网卡监听 |
| pg_hba.conf 来源 | 决定哪些地址可登录 | 写成任意来源加 trust 认证 |
| pg_hba.conf 认证 | 决定用哪种方式校验 | 长期使用 md5 而非更安全的 scram |
| 规则顺序 | 按顺序匹配,首个命中生效 | 宽泛规则写在前面,覆盖了后面的限制 |
连接与权限体检(SQL)
连接与权限体检(SQL)
SELECT usename, client_addr, state FROM pg_stat_activity; -- 谁在连、在做什么
SELECT rolname, rolsuper, rolcanlogin FROM pg_roles ORDER BY rolsuper DESC; -- 高权角色清单
SHOW ssl; -- 是否启用 TLS
SELECT datname, datacl FROM pg_database; -- 库级权限
\du -- psql 中查看角色与成员关系pg_hba.conf 写成允许任意来源且认证方式为 trust,等于任何能连上端口的主机无需密码直接进入数据库;远程访问必须指定来源网段并启用口令认证。
备份与恢复:逻辑备份适合单库与跨版本迁移,物理副本适合大库与搭建从库;备份文件本身含全部数据,权限要与数据库同级,并且定期做一次真实恢复演练。
连接失败的排查顺序:先看监听地址是否包含客户端所在的网段,再看 pg_hba.conf 是否放行该来源与认证方式,最后核对账号口令;三层里任一层不匹配都会表现为连接被拒绝。