首先修改postgresql.conf中listen_addresses为'*'或指定IP并确保端口正确,然后在pg_hba.conf添加远程访问规则如host all all 0.0.0.0/0 md5,接着配置防火墙放行5432端口并重启PostgreSQL服务。

PostgreSQL默认只允许本地连接,要实现远程访问需要调整配置。问题通常出在三个方面:监听地址、用户权限和防火墙设置。下面一步步说明如何解决。
1. 修改 postgresql.conf 配置文件
找到PostgreSQL安装目录下的 postgresql.conf 文件(通常位于 /etc/postgresql/[版本号]/main/ 或 /var/lib/pgsql/data/),修改以下参数:
-
listen_addresses:改为可接受远程连接的IP或全部地址
listen_addresses = '*' # 监听所有IP
或指定具体IP:
listen_addresses = 'localhost,192.168.1.100' -
port:确保端口正确(默认5432)
port = 5432
2. 配置客户端认证 pg_hba.conf
编辑 pg_hba.conf 文件,添加允许远程访问的规则。
在文件末尾加入类似以下内容:
- 允许某个IP通过密码连接:
host all all 192.168.1.50/32 md5 - 允许一个网段访问:
host all all 192.168.1.0/24 md5 - 允许所有IP(注意安全风险):
host all all 0.0.0.0/0 md5
其中 md5 表示使用密码验证方式。
3. 检查防火墙设置
确保系统防火墙放行PostgreSQL端口(默认5432)。
- 如果是 ufw(Ubuntu):
sudo ufw allow 5432 - 如果是 firewalld(CentOS/RHEL):
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload - 云服务器还需检查安全组规则,开放对应端口。
4. 重启 PostgreSQL 服务
修改完成后重启服务使配置生效。
- Ubuntu/Debian:
sudo systemctl restart postgresql - CentOS/RHEL:
sudo systemctl restart postgresql-xx # xx为版本号
测试远程连接时,使用psql命令或数据库工具从另一台机器尝试登录。
基本上就这些。只要配置文件改对了,防火墙开了,一般都能连上。注意别忘了重启服务。










