PostgreSQL怎么配置远程访问 PostgreSQL安全设置与权限详解

轻瑶吖_1356

轻瑶吖_1356

2026-04-28

414人浏览

原创

postgresql默认拒绝远程连接,须修改postgresql.conf的listen_addresses参数(如设为'127.0.0.1,192.168.1.100')和pg_hba.conf添加对应cidr规则(如host all all 192.168.1.0/24 md5),再reload或重启服务生效。

postgresql怎么配置远程访问 postgresql安全设置与权限详解

PostgreSQL 默认拒绝所有远程连接,必须显式修改两个配置文件并重启服务才能生效;但直接放开 0.0.0.0/0 和 listen_addresses = '*' 是高危操作,生产环境应严格限制 IP 范围与用户权限。

修改 postgresql.conf 启用 TCP/IP 监听

PostgreSQL 不监听远程请求的根本原因是 listen_addresses 默认只设为 'localhost'。这个参数控制数据库接受连接的网络接口,不是防火墙或端口开关。

  • 找到 postgresql.conf(常见路径:/etc/postgresql/*/main/postgresql.conf 或 /var/lib/pgsql/*/data/postgresql.conf)
  • 取消注释并修改该行:listen_addresses = 'localhost' → listen_addresses = '127.0.0.1,192.168.1.100'(推荐指定内网 IP,而非 '*')
  • 若需支持 IPv6,额外加上 ::1;不要写成 '*' 除非你清楚后果
  • 修改后不重启服务,pg_ctl reload 或 systemctl reload postgresql 即可生效(但部分旧版本仍需重启)

在 pg_hba.conf 中添加精确的访问规则

pg_hba.conf 决定“谁、从哪、连哪个库、用什么方式认证”,顺序敏感——匹配第一条即终止后续判断。错误地放在末尾或用了 trust 会导致未授权访问。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 规则格式:host <database><user><cidr-address><auth-method></auth-method></cidr-address></user></database>
  • 例如允许内网所有主机用密码连任意库:host all all 192.168.1.0/24 md5
  • 禁止某 IP:host all all 203.0.113.42 reject
  • 避免使用 host all all 0.0.0.0/0 md5 —— 这等于把密码验证当唯一防线,一旦密码泄露即全盘失守
  • 改完执行 pg_ctl reload 或 SELECT pg_reload_conf();(需超级用户权限)

PostgreSQL 用户密码与认证方式的选择

即使配置了正确 IP 和监听,如果用户没设密码或认证方式不匹配,远程连接仍会失败。常见坑是沿用默认的 ident 或 peer 认证,它们依赖操作系统用户,对远程无效。

  • 确认用户有密码:ALTER USER postgres PASSWORD 'your_strong_password';
  • md5 是最常用的安全选项:密码经 MD5 哈希后传输,服务端比对哈希值
  • password 会明文传输密码(仅限本地可信网络),不推荐
  • scram-sha-256(PostgreSQL 10+)比 md5 更安全,需客户端支持;如用 psql 连接需加 -c "set password_encryption = 'scram-sha-256'" 初始化
  • 检查当前用户认证方式是否被 pg_hba.conf 中更早的规则覆盖(比如前面有一条 local all all peer)

别忘了系统级和网络层限制

PostgreSQL 配置只是链路一环。很多连接失败其实卡在更外层:

  • Linux 防火墙(iptables / firewalld)是否放行 5432 端口?执行 sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload
  • 云服务器(如腾讯云、AWS)安全组是否允许对应 IP 段访问 5432?这比数据库配置优先级更高
  • SELinux 若启用,可能拦截 socket 绑定,临时关闭测试:sudo setenforce 0
  • 用 netstat -tlnp | grep :5432 确认 postmaster 进程确实在监听你配置的地址,而非仍只绑 127.0.0.1

真正容易被忽略的是:每改一次 pg_hba.conf 或 postgresql.conf,都必须 reload(或 restart),且 reload 不报错不代表规则生效——要实际用 psql -h <server_ip> -U <user></user></server_ip> 测试,同时看 PostgreSQL 日志(log_directory + log_filename 配置项所指位置)里的拒绝记录,那才是真实依据。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

213

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4369

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

627

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1376

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

460

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

150

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

881

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

224

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习