温馨提示×

centos上pgadmin如何远程连接

小樊
37
2026-01-08 03:30:45
栏目: 智能运维

在 CentOS 上让 pgAdmin 远程连接 PostgreSQL 的完整步骤

一、先明确部署形态

  • 若你在 CentOS 上安装的是pgAdmin 4 Web 应用(通过 RPM 或 pip 部署,浏览器访问),远程访问指的是在其他电脑的浏览器打开 pgAdmin 页面(默认端口通常为5050),然后用它去连目标数据库服务器。
  • 若你是在本地电脑使用桌面版 pgAdmin连接远程 CentOS 上的 PostgreSQL,远程访问指的是让 PostgreSQL 接受来自外部 IP 的连接,并在 pgAdmin 中填写服务器 IP、端口、用户、密码完成连接。

二、场景A 远程使用浏览器访问 pgAdmin 4 Web

  • 安装与启动
    • 安装 EPEL 与 pgAdmin 4(以 CentOS 8 为例):启用 EPEL 与 PowerTools,添加 PostgreSQL RPM 仓库后执行安装;安装完成后 pgAdmin 通常由 httpd 托管,服务名为 httpd
    • 启动与开机自启:sudo systemctl start httpd && sudo systemctl enable httpd
    • 访问地址:在浏览器输入 http://服务器IP:80(若做了端口转发或反向代理,则使用对应端口)。
  • 安全建议
    • 不建议把 pgAdmin 直接暴露在公网;可通过反向代理 + 限制来源 IP + HTTPS增强安全性;生产环境避免使用 DEFAULT_SERVER=‘0.0.0.0’ 的调试设置。

三、场景B 远程桌面版 pgAdmin 连接 CentOS 上的 PostgreSQL

  • 配置 PostgreSQL 允许远程
    • 修改数据目录下的 postgresql.conf,开放监听:listen_addresses = ‘*’(或指定服务器网口 IP);确认端口为 5432
    • 修改 pg_hba.conf,添加允许规则(示例为允许任意来源使用密码认证,生产请收敛网段):host all all 0.0.0.0/0 md5
    • 使配置生效:sudo systemctl restart postgresql(或 reload)。
  • 放行防火墙与云安全组
    • firewalld:sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp && sudo firewall-cmd --reload
    • 如使用云服务器,还需在安全组放行 5432/TCP
  • 在 pgAdmin 中新建服务器
    • 主机名/IP:填写 CentOS 服务器公网或内网 IP
    • 端口:5432
    • 维护数据库:postgres(或目标库)
    • 用户名/密码:PostgreSQL 中已创建的用户(如 postgres 或自定义用户)
    • 保存并尝试连接。

四、常见故障排查

  • 连接被拒绝或超时
    • 检查 PostgreSQL 是否在监听:ss -lntp | grep 5432;若仅 127.0.0.1:5432,说明 listen_addresses 仍为本地,需要改为 ‘*’ 并重启。
    • 核对 pg_hba.conf 规则是否匹配客户端来源 IP 与认证方式(常见为 md5/ scram-sha-256)。
    • 核对服务器防火墙与云安全组是否放行 5432/TCP
  • 身份验证失败
    • 确认用户名、密码正确;确认 pg_hba.conf 中的认证方法与客户端一致;必要时在 psql 中 ALTER USER 设置/重置密码。
  • 浏览器打不开 pgAdmin 页面
    • 确认 httpd 已启动且端口 80/443 已放行;如部署在非标准端口,确认端口转发或反向代理配置正确。

五、安全加固要点

  • 最小权限与网段收敛:pg_hba.conf 中仅允许可信 IP/网段 访问;避免使用 0.0.0.0/0 在生产环境。
  • 加密传输:在 postgresql.conf 启用 SSL(ssl = on) 并配置证书,客户端连接时启用 SSL 模式。
  • 访问控制:结合 firewalld/安全组 与反向代理限制来源;避免在公网直接暴露 pgAdmin 或数据库端口。

0