Ubuntu 上 pgAdmin 网络配置实操指南
一 场景与总体思路
- 区分两端配置:
- pgAdmin 4 Web 服务(浏览器访问的 pgAdmin 本体):需要让其监听外网或指定网段,并开放相应端口(常见为 5050,若你改动过则以实际为准)。
- PostgreSQL 数据库(被 pgAdmin 管理的目标库):需要允许远程连接(监听地址与客户端认证),并开放数据库端口(默认 5432)。
- 基本流程:配置监听与端口 → 配置访问控制(pg_hba / 防火墙)→ 重启服务 → 在 pgAdmin 中添加服务器连接。
二 配置 pgAdmin 4 Web 服务监听与端口
- 定位配置文件:常见路径为 /etc/pgadmin/pgadmin.conf;若通过桌面应用安装,可能在用户目录如 ~/.config/pgadmin/pgadmin.conf。
- 开启远程访问与端口:
- 将 listen_addresses 设为 0.0.0.0(或指定内网 IP,如 192.168.1.100),以允许来自其他主机的访问。
- 如需更改端口,设置 port = 5050(示例;确保该端口未被占用)。
- 使配置生效:
- 若以服务运行:执行 sudo systemctl restart pgadmin4
- 若以 WSGI/容器运行:重启对应服务或容器
- 注意:将 pgAdmin 暴露在公网前务必配合防火墙与反向代理/HTTPS。
三 配置 PostgreSQL 允许远程连接
- 编辑数据库配置:
- 打开 /etc/postgresql//main/postgresql.conf,将 listen_addresses = ‘*’(或指定服务器 IP),允许数据库监听外部接口。
- 在同一目录编辑 pg_hba.conf,添加允许规则(示例为允许所有 IPv4 以密码方式连接,生产环境请收紧网段):
- host all all 0.0.0.0/0 md5
- 重启数据库使配置生效:
- sudo systemctl restart postgresql
- 说明:上述为最常见的远程访问基线配置,务必结合网段限制与强口令策略。
四 防火墙与端口开放
- UFW(Ubuntu 常用):
- 开放数据库端口:sudo ufw allow 5432/tcp
- 开放 pgAdmin Web 端口(示例):sudo ufw allow 5050/tcp
- 查看状态:sudo ufw status verbose
- firewalld(如系统使用 firewalld):
- 开放端口:sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
- 重载:sudo firewall-cmd --reload
- 建议:仅对受信任网段/IP 开放,减少攻击面。
五 在 pgAdmin 中添加服务器连接与连通性排查
- 添加服务器连接:
- 打开 pgAdmin → 右键“服务器”→“创建”→“服务器”
- 在“连接”页填写:
- 主机名/IP:数据库服务器地址
- 端口:5432(或你的自定义端口)
- 维护数据库:如 postgres
- 用户名/密码:具有访问权限的数据库账户
- 连通性快速排查:
- 网络可达:ping <数据库IP>
- 端口可达:telnet <数据库IP> 5432 或 nc -zv <数据库IP> 5432
- 服务状态:数据库侧 sudo systemctl status postgresql;pgAdmin 侧 sudo systemctl status pgadmin4
- 虚拟机场景:确认 NAT/桥接网络模式与端口转发配置正确。
六 安全加固建议
- 限制来源 IP:在 UFW/Firewalld 中仅放行可信网段/IP 访问 5432/5050。
- 启用 HTTPS 与反向代理:用 Nginx/Apache 终止 TLS,证书可用 Let’s Encrypt,将 pgAdmin 运行在 443 并隐藏实际端口。
- 启用 SSL/TLS:为 pgAdmin 配置 SSL(证书与密钥),并在 pgAdmin 连接 PostgreSQL 时勾选 Use SSL。
- 强化认证与权限:为 postgres 与 pgAdmin 管理员设置强密码,遵循最小权限原则,定期更新系统与软件。