You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搭建可远程访问的Postgres数据库遇连接超时问题求助

解决PostgreSQL远程连接超时问题

核心问题排查步骤:


1. 修正主机IP地址错误

你输入的主机IP 192.168.1.255 是子网广播地址,并非HOST的实际内网IP。先在HOST上执行以下命令获取真实IP:

ip a | grep inet | grep -v 127.0.0.1

记下输出中类似 192.168.1.x 的地址,后续远程连接时使用该IP。

2. 配置PostgreSQL监听范围

PostgreSQL默认仅监听本地连接,需修改配置允许远程访问:

  1. 编辑主配置文件:
sudo nano /etc/postgresql/12/main/postgresql.conf
  1. 找到 listen_addresses 参数,修改为:
listen_addresses = '*'

(也可指定HOST的实际IP,如 listen_addresses = '192.168.1.x',更安全)
3. 重启PostgreSQL服务生效:

sudo systemctl restart postgresql

3. 配置访问控制规则(pg_hba.conf)

添加允许CLIENT所在子网访问的规则:

  1. 编辑访问控制文件:
sudo nano /etc/postgresql/12/main/pg_hba.conf
  1. 在文件末尾添加一行(假设CLIENT在192.168.1.0/24子网,可根据实际调整):
host    all             all             192.168.1.0/24        scram-sha-256

若知道CLIENT的具体IP,可改为 192.168.1.y/32 缩小访问范围。
3. 重启PostgreSQL服务:

sudo systemctl restart postgresql

4. 开放HOST端防火墙端口

Ubuntu默认使用ufw防火墙,需开放PostgreSQL默认端口5432:

sudo ufw allow 5432/tcp
sudo ufw reload

若使用iptables,执行以下命令:

sudo iptables -A INPUT -p tcp --dport 5432 -s 192.168.1.0/24 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

5. 验证网络连通性

在CLIENT上执行以下命令,测试与HOST的端口连通性(替换为HOST真实IP):

nc -zv 192.168.1.x 5432

若输出 Connection to 192.168.1.x 5432 port [tcp/postgresql] succeeded!,说明网络层正常;若失败,检查HOST防火墙或网络路由。

6. 确认用户登录权限

确保my_user具备远程登录权限(superuser默认包含LOGIN权限,可执行以下命令确认):

sudo -u postgres psql -c "SELECT usename, canlogin FROM pg_user WHERE usename='my_user';"

若canlogin为f,执行以下命令开启:

sudo -u postgres psql -c "ALTER USER my_user WITH LOGIN;"

内容的提问来源于stack exchange,提问作者Tom Hosker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:36:20