下面以 CentOS 7/8 + PostgreSQL(常见版本 12/13/14/15) 为例,系统地说明如何配置 PostgreSQL 远程访问。
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;"
编辑配置文件:
sudo vi /var/lib/pgsql/14/data/postgresql.conf
找到:
#listen_addresses = 'localhost'
修改为:
listen_addresses = '*'
✅ 表示监听所有 IP
✅ 生产环境可改为指定 IP
pg_hba.confsudo vi /var/lib/pgsql/14/data/pg_hba.conf
在文件末尾添加(示例):
host all all 0.0.0.0/0 md5
host all all 192.168.1.0/24 md5
常见认证方式:
| 方式 | 说明 |
|---|---|
| md5 | 密码加密 |
| scram-sha-256 | 更安全(PG10+) |
| trust | 免密(⚠️不安全) |
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
sudo systemctl restart postgresql
sudo systemctl restart postgresql-14
查看状态:
sudo systemctl status postgresql
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'YourStrongPassword';
\q
psql -h 服务器IP -U postgres -d postgres
连接参数:
Host: 服务器IP
Port: 5432
User: postgres
Password: 设置的密码
could not connect to server: Connection refused
✅ 检查:
listen_addressesno pg_hba.conf entry for host
✅ 检查 pg_hba.conf 是否包含对应 IP
password authentication failed
✅ 检查用户密码是否正确
trustpostgres 作为业务账号如果你愿意,可以告诉我:
我可以给你一份 完全匹配你环境的配置方案。