温馨提示×

CentOS PostgreSQL如何远程访问

小樊
40
2026-08-31 03:39:34
栏目: 云计算

下面以 CentOS 7/8 + PostgreSQL(常见版本 12/13/14/15) 为例,系统地说明如何配置 PostgreSQL 远程访问


一、前提条件

  • PostgreSQL 已安装并正常运行
  • 服务器防火墙已放行端口(默认 5432
  • 你拥有服务器 root 或 sudo 权限

二、修改 PostgreSQL 监听地址

1️⃣ 找到 postgresql.conf

常见路径:

/var/lib/pgsql/12/data/postgresql.conf
/var/lib/pgsql/13/data/postgresql.conf
/var/lib/pgsql/14/data/postgresql.conf
/var/lib/pgsql/data/postgresql.conf

也可通过命令查找:

sudo -u postgres psql -c "SHOW config_file;"

2️⃣ 修改监听地址

编辑配置文件:

sudo vi /var/lib/pgsql/14/data/postgresql.conf

找到:

#listen_addresses = 'localhost'

修改为:

listen_addresses = '*'

✅ 表示监听所有 IP
✅ 生产环境可改为指定 IP


三、配置允许远程 IP 访问

1️⃣ 编辑 pg_hba.conf

sudo vi /var/lib/pgsql/14/data/pg_hba.conf

在文件末尾添加(示例):

✅ 允许所有 IP 使用密码登录(测试环境)

host    all             all             0.0.0.0/0               md5

✅ 只允许指定 IP(推荐生产环境)

host    all             all             192.168.1.0/24          md5

常见认证方式:

方式 说明
md5 密码加密
scram-sha-256 更安全(PG10+)
trust 免密(⚠️不安全)

四、开放防火墙端口

CentOS 7 / 8(firewalld)

sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

查看状态

sudo firewall-cmd --list-ports

五、重启 PostgreSQL

CentOS 7

sudo systemctl restart postgresql

CentOS 8(可执行文件方式)

sudo systemctl restart postgresql-14

查看状态:

sudo systemctl status postgresql

六、设置 PostgreSQL 用户密码

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'YourStrongPassword';
\q

七、测试远程连接

本地测试

psql -h 服务器IP -U postgres -d postgres

使用客户端工具

  • pgAdmin
  • DBeaver
  • Navicat

连接参数:

Host: 服务器IP
Port: 5432
User: postgres
Password: 设置的密码

八、常见错误排查

❌ 连接被拒绝

could not connect to server: Connection refused

✅ 检查:

  • listen_addresses
  • PostgreSQL 是否启动
  • 防火墙

❌ 无权限

no pg_hba.conf entry for host

✅ 检查 pg_hba.conf 是否包含对应 IP


❌ 密码错误

password authentication failed

✅ 检查用户密码是否正确


九、生产环境建议 ✅

  • ❌ 不要使用 trust
  • ✅ 限制 IP 范围
  • ✅ 使用非默认端口
  • ✅ 启用 SSL
  • ✅ 不使用 postgres 作为业务账号

如果你愿意,可以告诉我:

  • CentOS 具体版本
  • PostgreSQL 版本
  • 云服务器 还是 内网服务器

我可以给你一份 完全匹配你环境的配置方案

0