PostgreSQL 安装与远程连接配置
发布时间:2026-01-26 22:03       
更新时间:2026-01-27 05:47
装完 PostgreSQL 远程连不上,问题八成出在两个配置文件:postgresql.conf 的监听地址和 pg_hba.conf 的访问规则。按下面的顺序改,一次配好。
准备条件
一台 Ubuntu 22.04 或 CentOS 7 以上系统的服务器,有 sudo 权限。Ubuntu 执行 apt install postgresql postgresql-contrib;CentOS 用 dnf install postgresql-server,再执行 postgresql-setup --initdb 初始化。
数据库单独放一台机器、不和应用抢资源,是后面配置的前提;内存 2G 起步,默认配置就能顺利跑起来。
第一步:放开监听地址
Debian 系配置在 /etc/postgresql/16/main/(数字随版本变化),RedHat 系在 /var/lib/pgsql/data/。编辑 postgresql.conf,找到 listen_addresses 改为:
listen_addresses = '*'
默认只监听 localhost,这行不改,外部连接请求根本到不了进程。只需要内网应用来连的话,这里也可以直接写内网 IP,比星号更收敛。改完要重启服务,配置才生效。
第二步:配置访问规则
编辑同目录的 pg_hba.conf,按最小范围原则加一行:
host all appuser 10.0.0.0/24 scram-sha-256
含义:允许 appuser 从 10.0.0.0/24 网段以 SCRAM-SHA-256 加密方式连接。别图省事写 0.0.0.0/0 配 trust——trust 意味着不验密码。网段按自己内网的实际范围填,多放一个都算隐患。pg_hba.conf 自上而下匹配,先命中的规则生效,新行要放在拒绝规则前面。
第三步:建账号设密码
sudo -u postgres psql 进入命令行:
CREATE USER appuser WITH PASSWORD '强密码';
CREATE DATABASE appdb OWNER appuser;
PostgreSQL 14 起默认用 SCRAM-SHA-256 存密码,老版本是 md5,密码存储方式要和 pg_hba.conf 里声明的一致,否则会报认证方式不支持的错。
建完在 psql 里执行 \du 看账号、\l 看库,确认新库属主没错再退出;密码由密码管理器生成,长度不低于十六位。
第四步:重启并验证
systemctl restart postgresql
在另一台机器上执行 psql -h 10.0.0.5 -U appuser -d appdb,能进命令行即成功,进去先跑一句 select version(); 记下版本号,排障查文档都用得上。连不上时先用 telnet 10.0.0.5 5432 测端口,再回头核对 pg_hba.conf 的匹配顺序。提醒一句:远程访问放开之后,防火墙只对可信网段放行 5432,公网裸露数据库端口是最常见的入侵入口;条件允许的话,改成走 SSH 隧道访问,5432 连放行都省了。