所有文章

2026-08-23

· Dylan Yu
PostgreSQLadmin panellocal-firstself-hosted

不用 Docker、不用服务器、不用折腾的 PostgreSQL 管理面板

pgAdmin 在浏览器里太重,DBeaver 像 2010 年的 Java 应用。这里介绍一种一分钟内装好、不需要 Docker、不需要云账号的现代 PostgreSQL 管理面板。

我用 PostgreSQL 快十年了,管理工具的情况一直让我困惑。Postgres 本身是地球上工程水平最高的软件之一——快、可靠、每年发布一个真正有内容的大版本。但我们用来 Postgres 数据库的工具,感觉像被封在琥珀里一样。

pgAdmin 4 是「官方」答案,好几年没实质改进。DBeaver 能用,但每次打开我都想起这是个 2010 年的 Java 应用。TablePlus 不错也快,但它是查询工具,不是管理面板。云端的 Retool、NocoDB 倒是给了真正的管理面板,但前提是你愿意把数据库连接交给他们的服务器。

我认识的每个人都想要同一样东西:一个现代的 Postgres 管理面板,不用 Docker,不用服务器,不用把连接字符串交给第三方。在 2026 年这不应该是个过分的要求。但很长一段时间里,它就是没有。

这篇文章讲我怎么解决这个问题,以及我最终用的工作流。我会公平地评价各个替代方案,因为它们大多是好工具,只是取舍不同。但我也会告诉你我最后用什么,以及为什么。

当前 PostgreSQL 管理工具(及其取舍)

我们来过一遍市面上实际有什么,因为情况比「pgAdmin 差,其他都好」更复杂。每个工具存在都有原因,都有真实用户。问题是哪些取舍对重要。

pgAdmin 4

pgAdmin 是 PostgreSQL 的官方管理工具,跟数据库本身一起维护。这个出身有分量。它支持每个 Postgres 特性,第一天就支持最新服务器版本,对角色管理、服务器监控、pgAgent 任务调度有深度支持。

问题在架构。pgAdmin 4 是个 Web 应用。要在本地跑,你要么装桌面版(内置 Python 运行时,底层启动一个本地 web 服务器),要么用 Docker。不管哪种,你都在跑一个 Python 服务器来提供一个浏览器 UI,去连一个已经在你机器上跑着的数据库。对于「打开我的数据库看看」这种事,动件太多了。

UI 本身能用但过时。它是个假装桌面应用的 web 应用,你能感觉到。树形导航、标签式查询窗口、占半个屏幕的属性面板。没有 kanban 视图,没有 gallery 视图,没有 dashboard。如果你想用 SQL 结果网格以外的方式浏览数据,没戏。

对于管理生产集群的 DBA,pgAdmin 仍是合理选择。对于只想干净地看看本地 Postgres 的开发者,它太重了。

DBeaver

DBeaver 是跨平台的主力工具。基本上支持所有数据库,免费(至少社区版是),功能多到数不清。ER 图、数据生成、带自动补全的 SQL 编辑、会话管理、事务隔离控制。只要有数据库功能,DBeaver 大概就有个按钮。

但 DBeaver 是 Java 应用,感觉就是。快机器上启动要几秒,慢机器上更久。UI 很密,工具栏里套工具栏里套面板。每次打开我都要花前三十秒回忆我要的东西在哪。它强大,但不舒服。

而且跟 pgAdmin 一样,DBeaver 本质上是查询工具。你写 SQL,得到一个网格。你的 tasks 表没有 kanban 视图。你的 images 表没有 gallery 视图。没有 dashboard 让你同时看每日注册图表和最近用户表。想要这些,自己建,或者没有。

如果你活在 SQL 里,想要一个应用搞定所有数据库,DBeaver 是对的工具。如果你想让数据库感觉像现代应用,它不是。

TablePlus / Postico

TablePlus(及其 Mac 专精的兄弟 Postico)是我个人用最久的。原生、快、用起来真的舒服。TablePlus 秒开,查询快,UI 看起来像这个十年设计的。macOS 上 Postico 更好,真正遵循 Mac 惯例。

但问题是:TablePlus 和 Postico 是查询工具,不是管理面板。它们写 SQL 和浏览表很好。但把你的 users 表变成 kanban 面板?不行。建一个给非技术合伙人看的 dashboard?不行。给队友一个受限的表视图而不用写自定义应用?不行。

还有多数据库问题。TablePlus 支持很多数据库,很好,但每个都只是一个查询窗口。你没有一个统一的管理面板,把你的 SQLite 业余项目数据库和生产 Postgres 数据库同等对待。

想要快速的原生 SQL 客户端,TablePlus 很棒。想要管理面板,它不是那个产品。

云端管理面板(Retool、NocoDB、Budibase)

这个类别真正兑现了「管理面板」的承诺。Retool、NocoDB、Budibase 都能让你指向一个 Postgres 数据库,得到真正的管理面板:表格、表单、dashboard、kanban,全套。NocoDB 尤其是开源的,几分钟就能把 Postgres 变成看起来像 Airtable 的东西。

取舍在架构。这些都是云端托管(或自托管在服务器上)的 web 应用。要用它们,你的 Postgres 连接、凭证、通常还有实际查询结果都要经过它们的服务器。对于有敏感数据的生产数据库,这是个真实的考量。即使 NocoDB 可以自托管,也需要跑一个服务器,通常意味着 Docker。

还有延迟和离线问题。如果你的 Postgres 在本地,通过云端管理面板意味着查询从你的机器上传到云服务器,再下回到你的本地数据库,结果再原路返回。对本地开发数据库来说这很荒谬,而且意味着你不能离线工作。

这些工具对它们来说确实是好工具。如果你需要团队共享的 web 管理面板,Retool 是个认真的产品。但对用本地或自托管 Postgres 的独立开发者或小团队来说,云端往返是个不该承受的取舍。

自己建(Django admin、PostgREST + 自定义 UI)

最后一个选项是很多工程师默认的:自己建。如果你已经在用 Django,它免费给你一个管理面板。PostgREST 把你的 Postgres 变成 REST API,你在上面建任何你想要的 UI。Hasura 用 GraphQL 做同样的事。

吸引力很明显:完全控制,不依赖第三方工具,恰好是你需要的视图。代价也很明显:你要永远维护它。Django admin 很好,直到你想要 kanban 视图,那时你就得写自定义模板。PostgREST 很好,直到你意识到你现在得建一整个前端。

我职业生涯里建过三次这种东西,每次最终都变成技术债。本该省时的管理面板变成了没人想碰的东西,因为它耦合在两年前的框架版本上。

如果你的管理面板需求非常特定,且有工程能力维护,自己建是对的。对其他人来说,它是个陷阱。

「不用 Docker」到底是什么意思

有件事一直困扰我。去搜「postgres admin panel」,读前十个教程。我跟你赌杯咖啡,至少八个以 docker run 开头。

类似这样:

docker run -p 8080:80 \
  -e PGADMIN_DEFAULT_EMAIL=admin@example.com \
  -e PGADMIN_DEFAULT_PASSWORD=secret \
  dpage/pgadmin4

我理解为什么。Docker 是部署的通用语言。如果你要把管理面板放在服务器上给团队共享,容器化是对的。我不反 Docker。我每天都在用。

但想想你对本地数据库跑这个命令时实际发生了什么。你启动一个容器。容器跑一个 Linux 环境。环境里启动一个 Python web 服务器。web 服务器提供一个浏览器 UI。你打开浏览器,浏览器跟 web 服务器通信,web 服务器跟你机器上已经跑着的数据库通信。

对本地开发者工作流来说,这是一条荒谬的间接链路。你的数据库就在那,一个 localhost socket 的距离。你引入容器、Linux 用户态、Python 运行时、HTTP 层,就为了渲染一张行表。

还有维护角度。Docker 镜像需要更新。pgAdmin 镜像出新版你得 pull。你的 volume mount 要持久化服务器注册信息。重启机器后容器不会自动回来,除非你设了重启策略。这些都不难,但都是纯粹因为工具选了 web 架构而存在的摩擦。

「不用 Docker」不意味着「我恨容器」。它的意思是:对于开发者想看本地 Postgres 这个常见场景,容器层是不必要的间接。一个通过 socket 跟 Postgres 通信的原生桌面应用更简单、更快、更可靠。这就是全部论点。

它也意味着「不用服务器」。很多管理面板工具,即使没有 Docker 化,也是需要跑服务器进程的 web 应用。要么你自己跑,要么别人替你跑。本地优先的桌面应用不需要服务器。你启动应用,它连上你的数据库,完事。退出应用,什么都没在跑。没有端口要管,没有进程要杀,没有不用时在后台吃内存的服务。

这就是我反复碰到的。每个「现代」管理面板都要我跑服务器。每个原生选项只是 SQL 客户端。中间没有东西:原生、快、不用服务器,但有真正的管理面板视图,不只是查询网格。

本地优先的替代方案

这里我告诉你我实际用什么。先说清楚:我跟 BaseVolt 有关,所以这不是 unbiased 推荐。但我参与它恰恰是因为我受够了想要更好的东西,所以偏见和使用场景是同一件事。

BaseVolt 是本地优先的桌面应用。macOS 和 Windows 都有。不需要云账号,不用跑服务器,不用 Docker 容器。下载、打开、连数据库。整个设置就这些。

核心思路是它给任何数据库一个完整的管理面板,不只是查询窗口。对 Postgres 来说,你用标准连接字符串连接,BaseVolt 读取你的 schema、表、列、类型、外键。然后给你:

  • Grid 视图 用于浏览行——你预期的样子,但带正确的外键查找,所以你看到关联行的显示名而不只是整数 ID。
  • Gallery 视图 用于有图片或文件的表——对内容表真的有用。
  • Kanban 视图 用于任何有状态列的表——我就是这样管理存在 Postgres 里的项目任务。
  • Dashboard 视图 你可以把图表和表格拖到画布上,建一个非技术人员能看懂的东西。

它还有内置 MCP 服务器。MCP 是让 Claude、Cursor、Windsurf 这类 AI 编程工具连接外部系统的协议。BaseVolt 的 MCP 服务器跑着的时候,我可以让 Cursor 指向我的 Postgres 数据库,说「给 users 表加一个 last_login_at 列,从 sessions 表回填」,Cursor 就能真正通过 BaseVolt 看到 schema,写出正确的迁移并执行。

本地优先这部分对我很重要。我的连接字符串不离开我的机器。查询结果不离开我的机器。用本地 Postgres 时,一切都在本地。没有经过云服务器的往返。我能在飞机上工作。

免费版可以连两个数据源,够你试试本地 Postgres 加一个 SQLite 业余项目。Pro 版 $99/年,加跨设备同步,如果你想让管理面板配置在笔记本和台式机之间跟着走,这有用。

我不假装 BaseVolt 适合所有场景。它是桌面应用,意味着不是给 50 人团队共享的 web 管理面板。但对独立开发者和小团队——我认识的大多数用 Postgres 的人——它是我终于觉得对了的东西。

一步步来:一分钟内装好 PostgreSQL 管理面板

我来实际走一遍,因为「一分钟内」是我应该能兑现的承诺。假设你已经有 Postgres 在某处跑着,本地或远程,你知道连接信息。

第 1 步:安装 BaseVolt

basevolt.app 下载你平台的应用。有 macOS 和 Windows。不用创建账号、不用邮件确认、不用信用卡。下载 .dmg 或安装包,运行,应用就开了。

装之前想先看看的话,demo.basevolt.app 有个浏览器里跑的 demo,连着示例数据库。不是完整的桌面体验,但能让你感受视图和 UI。

这步大概 20 秒,取决于下载速度。

第 2 步:添加 PostgreSQL 数据源

打开应用,点「Add Data Source」。你会看到 SQLite、PostgreSQL、MySQL、Cloudflare D1 的选项。选 PostgreSQL。

你可以填各个字段,也可以粘贴标准连接字符串。我总是用连接字符串,因为那是我 .env 文件里已有的东西。长这样:

postgresql://user:password@localhost:5432/mydatabase

粘进去,点连接。BaseVolt 用标准 libpq 兼容协议连 Postgres,所以 psql 能用的这里都能用。SSL 模式、自定义端口、Unix socket 路径,都支持。

这步大概 10 秒。

第 3 步:让 BaseVolt 读取你的 schema

连上后,BaseVolt 内省你的数据库。读取你的表、列、数据类型、主键和外键、索引。这些都在本地通过你现有的连接完成。

你会看到表在侧边栏列出,按 schema 分组。点任何表默认进入 grid 视图,显示第一页行。外键列显示关联行的可读值而不是原始 ID,这个小东西帮我省了很多 JOIN 查询。

schema 读取有缓存,所以首次加载后导航是即时的。如果你在 BaseVolt 外改了 schema,有个刷新按钮重新内省。

这步大概 5 秒,取决于你有多少表。

第 4 步:用 grid、kanban、gallery、dashboard 视图浏览

这里它从查询工具变成管理面板。

Grid 视图 是你的标准表浏览器。可排序的列、内联编辑、按任意列筛选行。你可以编辑单元格、回车、它就写入 Postgres。当前编辑有撤销。对 users 表,这就是我做快速数据修正的方式,不用写 UPDATE 语句。

Kanban 视图 适用于任何有 BaseVolt 能当状态用的列的表。我的一个 Postgres 数据库里有 tasks 表,status 列是枚举:todoin_progressdone。BaseVolt 自动提供 kanban 视图,三列、可拖拽卡片、每列计数。拖卡片就更新 Postgres 里的状态。这是我用 TablePlus 时一直想要却没有的东西。

Gallery 视图 用于有图片或文件列的表。我有个 products 表带 image_url 列,gallery 视图给我一个产品照片网格,下面是产品名。这就是我不写一条查询就 QA 一个目录的方式。

Dashboard 视图 是我做报告用的。你拿到一个画布,可以拖入图表(柱状图、折线图、饼图)基于对 Postgres 的查询,加上表格和统计卡片。我有个 dashboard 显示每日注册量、最近十个用户的表格、总收入的统计卡片。我跟合伙人共享一个只读版本,他不想写 SQL。

建 dashboard 第一次花几分钟,之后就保存了。改的时候不用重新部署什么。它就在那。

这步花多久取决于你想玩多久,但一分钟内就能得到有用的视图。

第 5 步:用 MCP 服务器做 AI 辅助 schema 工作

这部分真正改变了我工作的方式,值得解释一下,因为很多人还没用过 MCP。

MCP,Model Context Protocol,是 AI 工具跟外部系统通信的标准方式。BaseVolt 在本地跑一个 MCP 服务器。你把 AI 编程工具——我的是 Cursor——指向那个 MCP 服务器。现在 Cursor 就能通过 BaseVolt 看到你的数据库 schema。

实际工作流长这样。我在 Cursor 里打:「给 users 表加一个 last_login_at 时间戳列,写个回填,从 sessions 表取每个用户最近的 created_at。」

因为 Cursor 能通过 BaseVolt 的 MCP 服务器看到我的 schema,它知道确切的列名、类型、外键关系。它写出的迁移是真正正确的,不是猜的。我审查、批准、它对 Postgres 执行。整个过程大概 30 秒,我不用切到 SQL 客户端去查列名。

这跟 Claude、Cursor、Windsurf 都能用,任何说 MCP 的都行。对 schema 管理、schema 重构、甚至数据探索,都是实质性的效率提升。我以前花在编辑器和 SQL 客户端之间跳来跳去记一个列到底叫 user_id 还是 users_id 的时间惊人地多。那个摩擦没了。

启用方法:BaseVolt 里有个设置启动 MCP 服务器,给你连接字符串粘到 AI 工具的配置里。它在本地跑,所以你的 schema 和查询结果留在你机器上。

对比表

各方案对比如下。我尽量公平,因为这些都是有真实用户的真实工具,包括我自己。

工具安装时间需要 Docker原生应用视图和 dashboardAI 集成数据离开机器价格
pgAdmin 45-10 分钟(或 Docker pull)可选,但常见否,web 应用否,仅查询网格否(本地时)免费
DBeaver2-5 分钟是(Java)否,仅查询网格免费(社区版)
TablePlus / Postico1-2 分钟是(原生)否,仅查询网格$59-89/年
Retool(云端)10-20 分钟否(云端托管)否,web 应用是,完整管理面板有限是,经云服务器免费版,之后 $10+/用户/月
NocoDB5-10 分钟(自托管)是,通常否,web 应用是,完整管理面板取决于托管免费(自托管)
BaseVolt1 分钟内是(原生)是,grid/kanban/gallery/dashboard是,内置 MCP 服务器免费版(2 源),Pro $99/年

表格里几点说明,因为表格会抹平细节:

  • pgAdmin 的「数据不离开机器」只有本地运行时成立。用云端 pgAdmin,数据显然经过它们服务器。
  • Retool 的 AI 功能存在但在云端,意味着你的 schema 和查询会发给它们的 AI 提供商。BaseVolt 的 MCP 方式把 AI 交互留在你本地编辑器里。
  • NocoDB 确实免费且开源,很好。代价是你要跑服务器,这是维护负担。
  • TablePlus 在它做的事上很优秀。它在这个表里是「快速原生 SQL 客户端」的参照点。它只是不是管理面板。

对我来说、可能对你来说重要的那一行,是最后一行。一分钟内装好、不用 Docker、原生应用、真正的视图和 dashboard、本地跑的 AI 集成、数据留在机器上、真正能用的免费版。这是我在别处找不到的组合。

什么时候这个方案赢(什么时候不赢)

我想诚实地说,因为没有工具适合所有场景,假装如此的结果是营销文案而不是有用的推荐。

本地优先、桌面应用的方案在这些时候赢:

  • 你是独立开发者或小团队用 Postgres。这是最佳场景。你想要快速、原生的管理面板,不想跑服务器,不需要跟 30 人共享 web UI。
  • 你的 Postgres 在本地或你能直接到达的机器上。如果你连 localhost:5432 或通过私有网络连 VPS,桌面应用是自然的搭配。
  • 你在意数据不离开机器。这对镜像生产的本地开发数据库、有 PII 的数据库、以及默认注重隐私的人都重要。
  • 你想要 AI 辅助 schema 工作但不想把 schema 发给云端 AI 服务。MCP 服务器方式把 AI 留在本地编辑器,同时让它访问你真实的 schema。
  • 你想要管理面板视图,不只是 SQL 网格。如果 kanban、gallery、dashboard 会真正改变你跟数据交互的方式,查询工具不够。

本地优先方案在这些时候不赢:

  • 你需要跨大型分布式团队共享的 web 管理面板。如果你有 40 个人分布在三个时区,都要通过浏览器看同一个 Postgres,部署在服务器上的 pgAdmin、Retool 或 NocoDB 可能是对的。桌面应用不是共享 web 服务,假装它是就是不诚实。
  • 你需要从手机或任意机器不装东西就能访问管理面板。web 工具在这里定义上就赢。BaseVolt 需要装桌面应用,这是一次性成本但是真实的。
  • 你用 Linux。我直说:BaseVolt 现在是 macOS 和 Windows。如果你活在 Linux 上,用 DBeaver 或自托管 NocoDB 更好。我不假装一个不能在你 OS 上跑的工具适合你。
  • 你需要深度 DBA 功能如 pgAgent 任务调度、服务器监控、细粒度复制槽管理。pgAdmin 在那里仍有优势,因为它是 Postgres 团队为 Postgres DBA 建的。BaseVolt 是为想要管理面板的开发者和小团队建的,不是为管理生产集群的 DBA 建的。

诚实的总结是 BaseVolt 适合开发者和小团队场景——这是用 Postgres 的人里很大一块。它不适合 DBA 管理集群的场景,也不适合大团队共享 web 面板的场景。如果你在那两个里,用 pgAdmin 或云端工具。如果你在第一个里,以我的经验,本地优先桌面方式比替代方案明显更好。

总结

Postgres 管理工具的情况停滞了很久,我认为原因是大多数工具是为不同于今天用户的受众建的。pgAdmin 为 DBA 建。DBeaver 为数据库无关的高级用户建。TablePlus 为想要快速 SQL 客户端的人建。云端管理面板为想要共享 web UI 的团队建。

很长一段时间缺失的,是为有 Postgres 数据库、想要现代管理面板但不要 Docker、不要服务器、不要云端往返的开发者建的东西。这就是 BaseVolt 填补的空白,也是我用它的原因。

如果你一直在浏览器里咬牙用 pgAdmin,或在 DBeaver 的工具栏迷宫里眯眼,或付了 TablePlus 钱还是没有 kanban 视图,试试。一分钟内装好,免费版能连两个数据源,数据不离开你的机器。光 MCP 集成就改变了我做 schema 工作的方式,而那些视图是我有了之后才知道自己缺的东西。

basevolt.app 试试 — 不用注册,不用信用卡。

如果你用它做了什么,或对 Postgres 工具生态怎么更好有想法,我真心想听。在 X 上找我。

BasevoltBasevolt

试试 Basevolt —— 免费的本地优先数据库管理面板,支持 PostgreSQL、MySQL、SQLite 和 Cloudflare D1。

免费下载 Basevolt