欢迎光临
我们一直在努力

CentOS 7运行PostgreSQL,Docker跑pgAdmin:宿主机数据库接通后直接在网页里管理库和角色

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 → 浏览器连接宿主机数据库 → 建库和角色管理 → 外部设备继续访问这条链。

image-20260909170254565

1.pgAdmin是什么?

pgAdmin是用于管理PostgreSQL数据库的开源可视化工具,支持网页版与桌面客户端。它可以把数据库对象、角色权限、SQL工具和运行状态放到图形界面中查看和操作。

✅ 核心特点

  • 原生适配PostgreSQL专门为PG设计,完整支持PG所有特性:角色权限、schema、分区表、触发器、存储过程、扩展、逻辑复制等,不会像通用数据库工具那样丢失PG独有的功能。
  • B/S网页架构(你现在用的版本) 网页版pgAdmin可以部署在Docker、服务器上,浏览器直接访问,不用在每台电脑单独装客户端。你当前就是Docker容器部署的网页版pgAdmin4。
  • 可视化替代命令行 不用死记psql命令,鼠标点选就能:
    • 创建 / 删除数据库、表、索引、视图
    • 管理数据库用户、角色、权限
    • 可视化写SQL,执行、查看结果,自动生成执行计划(慢查询调优神器)
    • 查看数据库连接、后台进程、日志、磁盘占用
    • 导入、导出SQL/CSV备份数据
  • 跨平台 支持Windows、Linux、macOS;网页版只要浏览器就能打开。
  • 📌 适合人群

    • PostgreSQL新手:不想全程敲黑框psql命令,可视化理解表结构
    • 开发人员:快速写SQL、调试语句、查看执行计划
    • 运维:日常监控、权限管理、简单备份恢复

    ⚠️ 小误区

    pgAdmin跑在Docker容器里,容器内127.0.0.1是容器自身,不能直接访问宿主机的PostgreSQL,必须填写宿主机真实内网IP。

    一句话总结

    PostgreSQL是数据库服务(存放数据),pgAdmin是它的可视化网页管理面板,相当于数据库的网页后台,替代psql命令行做图形化操作。

    2.安装前提

    系统基础环境

  • 操作系统:支持Linux(CentOS7/8、Ubuntu、Debian等)
  • 内核版本:Linux内核 ≥ 3.10(CentOS7默认内核3.10,符合最低门槛)
  • 网络:服务器能拉取Docker镜像,可以访问外网(拉取dpage/pgadmin4镜像)
  • 资源最低配置
    • CPU:1核起步
    • 内存:至少512M,推荐 ≥1G;内存过低会出现pgAdmin网页加载卡顿、500报错
  • 预先装好Docker环境

    • 已安装Docker Engine,并且Docker服务正常运行

    # 校验命令
    docker -v
    systemctl status docker

    • Docker后台服务设置开机自启(可选,服务器推荐)

    systemctl enable docker

    网络与端口规划

  • 宿主机端口预留:需要一个空闲端口(你用的是5050),端口不能被其他程序占用
  • # 查看端口占用示例
    ss -tulpn | grep 5050

  • 防火墙放行pgAdmin访问端口:外部浏览器访问pgAdmin网页,需要在firewalld开放对应端口
  • firewall-cmd –permanent –add-port=5050/tcp
    firewall-cmd –reload

    如果你后续要连接宿主机 PostgreSQL 数据库,PG 的 5432 端口也需要放行。

    数据库前置

  • PostgreSQL服务正常运行,监听地址设置为 *(listen_addresses='*'),不能仅监听 127.0.0.1
  • pg_hba.conf访问策略允许pgAdmin容器网段访问 PG
  • 数据库账号(postgres)已设置登录密码,不能是空密码
  • 容器pgAdmin连接宿主机PG时,不能填写127.0.0.1,必须填写宿主机真实内网 IP
  • 其他前置

  • 时间同步:服务器系统时间准确,避免cookie、会话登录异常
  • 权限:操作服务器需要root或者具备sudo权限
  • 域名(可选):如果想域名访问pgAdmin,提前准备域名并做解析(内网使用不需要)
  • 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

    image-20260909161813313

    查看是否启动成功:

    docker ps

    image-20260909161923345

    查看日志是否报错:

    docker logs pgadmin4

    image-20260909162225450

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

    42498945403a8b4793a9835ff43f36a3

    4.使用pgadmin

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

    f548e58b32c42e0329f82fea27f5a267

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

    571b9fda567647d68317264f9b2e51f7

    添加postgres服务:

    0cbbf631ae8e0d1755b3777730b989f7

    设置名称:

    a327b2c712a6060ad0e47392369659a0

    连接设置:

    • 主机名称 / 地址填写宿主机内网IP192.168.42.140
    • 端口保持默认5432
    • 维护数据库为postgres
    • 用户名填写postgres并录入数据库登录密码

    开启保存密码选项,界面右下角是蓝色的保存按钮,用于提交PostgreSQL数据库连接配置。

    • 可以先查看自己所有的用户:

    e753f8ca3228df5e27f80d7489e11ebb

    a0e805a5542df180ffbebfc50c17d8cc

    导入成功:

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

    60d16b3f3cdbd154923c1c40e84afe24

    手动创建数据库:

    image-20260909165356571

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

    image-20260909165733629

    查看sql语句:

    image-20260909165847368

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

    image-20260909165934264

    手动创建用户:

    image-20260909165958030

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

    image-20260909170032366

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

    image-20260909170042163

    创建成功:

    image-20260909170150143

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

    image-20260909170209516

    到这里,连接数据库、查看运行状态、创建数据库和角色这些常用操作已经分别走过一遍。

    前面的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

    image-20250725104019896

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

    sudo systemctl status cpolar

    22e5adfaf290a17fc3384bb296055259

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

    打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

    8a6698b1bf26d64ba3645827fbfb1c29

    6.配置公网地址

    登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

    • 隧道名称:可自定义,本例使用了:pgadmin,注意不要与已有的隧道名称重复
    • 协议:http
    • 本地地址:5050
    • 域名类型:随机域名
    • 地区:选择China Top

    image-20260909170454054

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

    image-20260909170905561

    访问成功。

    image-20260909171005209

    7.保留固定公网地址

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

    image-20250918151358733

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

    image-20260909171110414

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

    image-20260909171127589

    修改隧道信息,将保留成功的二级子域名配置到隧道中

    • 域名类型:选择二级子域名
    • Sub Domain:填写保留成功的二级子域名
    • 地区: China Top

    点击更新

    image-20260909171151892

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

    image-20260909171217105

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

    image-20260909171228706

    总结

    这篇真正完成的是一条PostgreSQL从命令行管理扩展到浏览器管理的使用链:PostgreSQL继续运行在CentOS 7宿主机上,pgAdmin则通过Docker提供Web管理界面,两者连接以后就可以在网页里查看和操作数据库对象。

    正文里不只完成了“连接成功”这一步,还继续走了创建数据库、创建用户角色、查看会话和事务等操作。这样pgAdmin的价值就比较明确:它不是替代SQL,而是把很多需要频繁查看和重复操作的内容放进了更直观的界面中。

    对于已经熟悉psql的人来说,命令行依然适合脚本、批量操作和精确控制;pgAdmin更适合日常查看结构、核对权限、浏览状态和处理一些常规管理任务。两种方式并不冲突。

    后半段加入cpolar以后,pgAdmin这个Web入口还能从局域网之外继续访问。PostgreSQL负责数据库服务,pgAdmin负责图形化管理,cpolar负责外部访问入口,这样本地数据库就多了一套可以长期使用的浏览器管理方式。

    赞(0)
    未经允许不得转载:171主机测评 » CentOS 7运行PostgreSQL,Docker跑pgAdmin:宿主机数据库接通后直接在网页里管理库和角色
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址