CentOS 7运行PostgreSQL,Docker跑pgAdmin:宿主机数据库接通后直接在网页里管理库和角色
前言
PostgreSQL本身已经运行正常以后,日常管理并不一定还要把所有事情都留在psql里完成。建库、建用户、看表结构、核对角色权限、查看当前会话,这些操作如果频繁重复,单纯依赖命令行会比较容易在语法、对象名称和上下文之间来回切换。
pgAdmin提供的是另一套管理入口。它并不替代PostgreSQL,而是把数据库对象、角色、会话状态和SQL工具放到浏览器里,让日常查看和部分管理操作可以直接通过网页完成。
这篇采用CentOS 7运行PostgreSQL、Docker运行pgAdmin的方式。先准备Docker和数据库访问条件,再启动pgAdmin容器,随后通过浏览器登录面板,并把容器里的pgAdmin连接到宿主机PostgreSQL。
连接成功以后,正文会继续实际创建数据库和用户角色,查看仪表盘里的会话与事务信息,并通过网页界面完成一部分原本常用SQL命令才能完成的操作。
对于需要频繁核对对象和权限的场景,这种图形化入口也能减少在多条命令和查询结果之间反复切换。
后半段再加入cpolar,让pgAdmin这个浏览器管理入口可以从其他网络环境访问。整篇真正跑的是PostgreSQL服务 → Docker运行pgAdmin → 浏览器连接宿主机数据库 → 建库和角色管理 → 外部设备继续访问这条链。

1.pgAdmin是什么?
pgAdmin是用于管理PostgreSQL数据库的开源可视化工具,支持网页版与桌面客户端。它可以把数据库对象、角色权限、SQL工具和运行状态放到图形界面中查看和操作。
✅ 核心特点
- 创建 / 删除数据库、表、索引、视图
- 管理数据库用户、角色、权限
- 可视化写SQL,执行、查看结果,自动生成执行计划(慢查询调优神器)
- 查看数据库连接、后台进程、日志、磁盘占用
- 导入、导出SQL/CSV备份数据
📌 适合人群
- PostgreSQL新手:不想全程敲黑框psql命令,可视化理解表结构
- 开发人员:快速写SQL、调试语句、查看执行计划
- 运维:日常监控、权限管理、简单备份恢复
⚠️ 小误区
pgAdmin跑在Docker容器里,容器内127.0.0.1是容器自身,不能直接访问宿主机的PostgreSQL,必须填写宿主机真实内网IP。
一句话总结
PostgreSQL是数据库服务(存放数据),pgAdmin是它的可视化网页管理面板,相当于数据库的网页后台,替代psql命令行做图形化操作。
2.安装前提
系统基础环境
- CPU:1核起步
- 内存:至少512M,推荐 ≥1G;内存过低会出现pgAdmin网页加载卡顿、500报错
预先装好Docker环境
- 已安装Docker Engine,并且Docker服务正常运行
# 校验命令
docker -v
systemctl status docker
- Docker后台服务设置开机自启(可选,服务器推荐)
systemctl enable docker
网络与端口规划
# 查看端口占用示例
ss -tulpn | grep 5050
firewall-cmd –permanent –add-port=5050/tcp
firewall-cmd –reload
如果你后续要连接宿主机 PostgreSQL 数据库,PG 的 5432 端口也需要放行。
数据库前置
其他前置
3.安装pgAdmin
Docker一键部署pgAdmin4
docker run -d \\
–name pgadmin4 \\
-p 5050:80 \\
-e PGADMIN_DEFAULT_EMAIL=admin@pg.com \\
-e PGADMIN_DEFAULT_PASSWORD=Admin@123456 \\
-v pgadmin-data:/var/lib/pgadmin \\
–restart=always \\
dpage/pgadmin4:6.21

查看是否启动成功:
docker ps

查看日志是否报错:
docker logs pgadmin4

部署完成后,在浏览器中输入 http://IP:5050 就能看到pgadmin的界面:

4.使用pgadmin
使用docker部署时的账号密码登录,并把语言设置成中文:

登录以后,就可以继续添加需要管理的PostgreSQL服务。

添加postgres服务:

设置名称:

连接设置:
- 主机名称 / 地址填写宿主机内网IP192.168.42.140
- 端口保持默认5432
- 维护数据库为postgres
- 用户名填写postgres并录入数据库登录密码
开启保存密码选项,界面右下角是蓝色的保存按钮,用于提交PostgreSQL数据库连接配置。
- 可以先查看自己所有的用户:


导入成功:
pgAdmin网页管理面板的数据库仪表盘页面,左侧浏览器栏已成功连接名为postgres的PostgreSQL服务器;页面上方展示多组可视化监控图表,包含服务器会话、每秒事务、元组输入输出、数据块I/O等实时性能曲线,下方服务器活动区域列出数据库所有会话进程,能直观看到PID、连接用户、客户端来源、会话状态与等待事件,其中一条会话来自pgAdmin自身,状态为active,实现网页端一站式监控数据库运行状态。

手动创建数据库:

pgAdmin网页端的「创建 – 数据库」弹窗,当前停留在General基础标签页,数据库名称输入框填写ceshi,所有者下拉菜单选择超级用户postgres,右下角蓝色保存按钮用于提交创建操作,全程鼠标操作即可完成新建数据库,无需手写CREATE DATABASE SQL语句。

查看sql语句:

保存完成后,可以在左侧对象树中看到新建内容:

手动创建用户:

pgAdmin网页端的「创建 – 登录 / 组角色」弹窗,当前在General基础标签页,角色名称输入框填入ceshi,上方还有定义、权限、成员、安全等配置子标签页,右下角蓝色保存按钮,用来新建数据库登录账号,可视化完成PostgreSQL用户角色创建,不用手写CREATE ROLE语句。

pgAdmin创建登录 / 组角色窗口的权限标签页,可以可视化配置角色权限开关,包含是否允许登录、是否设为超级用户、能否新建角色、能否创建数据库、是否继承父角色权限、是否支持流复制备份等选项,当前仅开启「从父角色继承权限」,其余选项保持关闭状态,右下角提供保存按钮,鼠标勾选即可完成角色权限配置,不用手写权限相关SQL。

创建成功:

表空间等其他对象也可以从对应菜单继续管理。

到这里,连接数据库、查看运行状态、创建数据库和角色这些常用操作已经分别走过一遍。
前面的pgAdmin已经能够在局域网中管理PostgreSQL。如果还希望在其他网络环境里打开这个Web面板,就需要再给pgAdmin增加一个外部访问入口。
这里继续使用cpolar,让运行在服务器上的pgAdmin页面可以从局域网之外访问。pgAdmin负责数据库管理界面,cpolar负责扩展这个Web入口的访问范围。
5.安装cpolar实现外部访问
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar可以将你本地电脑中的服务(如SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:pgadmin,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:5050
- 域名类型:随机域名
- 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

7.保留固定公网地址
使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是pgadmin,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。

修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

总结
这篇真正完成的是一条PostgreSQL从命令行管理扩展到浏览器管理的使用链:PostgreSQL继续运行在CentOS 7宿主机上,pgAdmin则通过Docker提供Web管理界面,两者连接以后就可以在网页里查看和操作数据库对象。
正文里不只完成了“连接成功”这一步,还继续走了创建数据库、创建用户角色、查看会话和事务等操作。这样pgAdmin的价值就比较明确:它不是替代SQL,而是把很多需要频繁查看和重复操作的内容放进了更直观的界面中。
对于已经熟悉psql的人来说,命令行依然适合脚本、批量操作和精确控制;pgAdmin更适合日常查看结构、核对权限、浏览状态和处理一些常规管理任务。两种方式并不冲突。
后半段加入cpolar以后,pgAdmin这个Web入口还能从局域网之外继续访问。PostgreSQL负责数据库服务,pgAdmin负责图形化管理,cpolar负责外部访问入口,这样本地数据库就多了一套可以长期使用的浏览器管理方式。
