Mathesar 0.12.0 介绍与选型指南
Mathesar 0.12.0(PostgreSQL 直存型数据管理 Web UI,GPL-3.0 非营利基金会维护)的定位、Django+msar+Caddy 架构、功能特性清单、RPC 最小验证链,以及与 NocoDB/Baserow/Teable 的量化选型对比(星数/许可证/版本节奏均溯源至 2026-10-30)。
Mathesar 0.12.0 介绍与选型指南
目标:说清 Mathesar 0.12.0 是什么、架构如何、能做什么、与同类「表格化数据管理 UI」相比该如何选型。本文所有版本号、功能点、量化数据均来自 mathesar.org 官网、GitHub Releases 与本地真实环境(Ubuntu 22.04 宿主 + Mathesar 0.12.0 + PostgreSQL 17.6 / 16.15 双实例)的实测取证,竞品星数与许可证逐项溯源,查询日期均为 2026-10-30。
一、环境信息
本文取证与实测所用环境如下,所有回显均可在这套环境中复现:
- 操作系统:Ubuntu 22.04(宿主,Linux 5.15 x86_64)
- Mathesar:0.12.0(镜像
mathesar/mathesar:0.12.0,约 2.24 GB,镜像构建时间距今约 4 个月,对应官方 2026-07-02 发布的 0.12.0) - 内部数据库:PostgreSQL 17.6(Debian 17.6-1.pgdg12+1,
pgautoupgrade/pgautoupgrade:17-bookworm提供,同时承载 Mathesar 自身元数据库mathesar_django与示例业务库warehouse) - 外部数据库:PostgreSQL 16.15(Alpine 构建,用于验证 Mathesar 连接「已有 PostgreSQL 实例」的形态)
- 应用运行时:Python 3.14.6 + Django 4.2.29 + Gunicorn(1 主进程 + 3 worker,
WEB_CONCURRENCY=3) - 反向代理:Caddy(
mathesar/mathesar-caddy:latest),Web 入口http://localhost:8128 - msar SQL 层:
warehouse库内实测存在msar、__msar、mathesar_types三个 schema,其中msarschema 下 479 个函数
💡 技术拓展:这一类「给数据库套一层表格 UI」的工具,底层数据存放策略分两派——一派是「直存派」:UI 直接操作用户已有的 PostgreSQL 表,数据永远是标准 PG 表,代表即 Mathesar;另一派是「抽象层派」:数据存入自建的存储结构,UI 提供类电子表格视图,再按需映射到数据库,代表如 NocoDB、Baserow、Teable。直存派不锁定数据、可直接用 psql 继续管理,抽象层派功能更「表格产品化」但引入了自有数据模型。本文主角 Mathesar 属于直存派。
二、软件概述
Mathesar 官网(mathesar.org,查询日期 2026-10-30)的官方定位原文是:
"An intuitive, open-source UI to view, edit, and query Postgres data, with easy deployment and robust access control."(一个直观的开源 UI,用于查看、编辑和查询 PostgreSQL 数据,部署简单、访问控制健壮)
概括成一句话:Mathesar 是一个直接架在 PostgreSQL 之上的、类电子表格操作体验的 Web 数据管理界面,由美国 501(c)(3) 非营利组织 Mathesar Foundation 维护,承诺 100% 开源、永远可自托管。
关键身份信息(均经溯源核实,查询日期 2026-10-30):
| 维度 | 事实 | 来源 |
|---|---|---|
| 官网 | mathesar.org(首页标题 "Mathesar - Open source UI for Postgres databases") | 官网首页抓取 |
| 代码仓库 | github.com/mathesar-foundation/mathesar | 官网 GitHub 链接 |
| 许可证 | GPL-3.0(GNU GENERAL PUBLIC LICENSE Version 3,仓库根 LICENSE 文件实证,无 premium/enterprise 分区) | raw.githubusercontent.com 实抓 |
| 维护方 | Mathesar Foundation,501(c)(3) 非营利组织(官网原文 "maintained by a 501(c)(3) nonprofit") | 官网首页 |
| GitHub Stars | 5.2k | shields.io /github/stars 徽章 JSON 返回 {"message":"5.2k"} |
| 最新版本 | 0.12.0(2026-07-02 发布) | GitHub Releases Atom 订阅源 |
| 技术栈 | Python 3.14.6 + Django 4.2.29 + Svelte 前端构建产物 + Caddy | 镜像内实测(pip show django、settings 文件、Caddyfile) |
| 支持的数据库 | 仅 PostgreSQL | 官网定位原文 + 全部 RPC 接口围绕 PG 实现 |
| 商业版 | 无(官网仅有 Cloud 托管服务 "Try Cloud for free",无功能阉割的开源/商业双轨) | 官网导航栏 |
版本节奏量化(GitHub Releases Atom 源,查询日期 2026-10-30):从 0.7.0 到 0.12.0 共 8 个 release 分布在 9 个月内——0.7.0(2025-10-31)、0.7.1(2025-11-11)、0.8.0(2025-12-20)、0.9.0(2026-02-10)、0.10.0(2026-04-21)、0.10.1(2026-04-26)、0.11.0(2026-05-28)、0.12.0(2026-07-02),平均 5~6 周一个功能版本,迭代活跃且稳定(未见长期断档)。
三、核心架构
Mathesar 采用「Django 单体应用 + msar SQL 函数层 + Caddy 反代」三层结构,全部结论来自对运行中 0.12.0 实例的直接检查:
浏览器
│ HTTP(:80,本环境映射为宿主 :8128)
▼
Caddy 反向代理(mathesar/mathesar-caddy)
│ /static/* /media/* → 本地文件直出(file_server)
│ 其余 → reverse_proxy mathesar_service:8000
▼
Gunicorn + Django(mathesar/mathesar:0.12.0,WSGI config.wsgi)
│ ├─ Web UI 路由(/auth/login/、/db/...、/administration/...)
│ ├─ JSON-RPC 2.0 端点 /api/rpc/v0/(modernrpc,107 个方法)
│ └─ Django ORM → 元数据库 mathesar_django
▼
用户 PostgreSQL(warehouse / business / 任意已连接 PG)
└─ msar / __msar / mathesar_types schema(479 个 SQL 函数,数据操作就地完成)
各层实测证据:
- Caddy 层:从 Caddy 容器内读出的 Caddyfile 显示,
{$DOMAIN_NAME}站点内handle_path /static/*、/media/*用file_server直接吐文件(带precompressed br zstd gzip),其余流量reverse_proxy mathesar_service:8000;另设respond /caddy-health-check 200供自身探活。 - 应用层:
ps实测主进程为gunicorn config.wsgi -b 0.0.0.0:8000 --chdir /code --timeout 180,3 个 worker(对应WEB_CONCURRENCY=3);Python 3.14.6、Django 4.2.29;静态资源由 WhiteNoise 中间件配合CompressedManifestStaticFilesStorage管理(settings 源文件实证)。 - API 层:Django 路由文件(
mathesar/urls.py)实测含path('api/rpc/v0/', views.MathesarRPCEntryPoint.as_view()),底层是 modernrpc 库;settings 中MODERNRPC_METHODS_MODULES注册了 22 个方法模块,运行时枚举共 107 个 RPC 方法(含system.listMethods等 4 个系统方法)。 - SQL 层:登录示例库
warehouse执行\dn实测存在 5 个 schema——msar(479 个函数,承担表/列/记录/查询等数据面操作)、__msar(内部辅助)、mathesar_types(Mathesar 自有数据类型的支持函数)、用户业务 schema(如Library Management、public)。用户数据始终是标准 PostgreSQL 表,Mathesar 卸载后业务表原样保留。 - 元数据层:用户账号、数据库连接配置、Explorations 查询定义、表单等存于自带的
mathesar_django元数据库(连接配置POSTGRES_HOST=mathesar_db,实测环境变量与 common-data JSON 中"internal_db"字段一致)。
这套架构的直接推论:Mathesar 对业务库的「侵入」仅限于在库内安装 msar 函数 schema(并在连接时记录 last_confirmed_sql_version,实测值为 0.12.0),不迁移、不改写用户表结构本身。
四、功能特性
以下特性均在 0.12.0 实例上验证过存在性与可用性(验证手段标注在括号内):
| 功能域 | 说明 | 实测依据 |
|---|---|---|
| 表格化数据管理 | 对 PG 表做行级增删改查、列类型管理、主键/外键管理,操作体验类电子表格 | RPC records.add/patch/delete、columns.*、tables.* 全链路实测通过 |
| 外键关联与「链接记录摘要」 | 外键列在下拉中显示被关联行的摘要而非裸 ID | records.list 返回 linked_record_summaries: {"5": {"1": "骑兵部"}} 实测 |
| Explorations 自定义查询 | 保存可复用的查询定义(选列/改名/过滤/变换),随时运行 | explorations.add + explorations.run 实测跑通「薪资一览」查询 |
| 多数据库连接 | 同时管理多个 PostgreSQL 服务器/数据库,支持连接「已有外部实例」 | 同实例内配置了内部 warehouse + 外部 business(PG 16.15)两库,servers.configured.list 返回两个 server 实测 |
| 数据库内权限模型 | 依赖 PostgreSQL 角色与权限(官网:"Postgres for Access Control"),RPC 提供 *.privileges.* 系列方法 | 方法清单实测含 databases/schemas/tables.privileges.* 共 9 个权限方法 |
| 多用户与协作 | 用户管理、协作者(collaborator)绑定数据库角色 | users.add(zhangsan)+ collaborators.add 实测通过 |
| SSO 单点登录 | OIDC 与 GitHub(allauth 的 openid_connect、github provider),SSO_CONFIG_DICT 配置 | settings INSTALLED_APPS/SOCIALACCOUNT_PROVIDERS 源码实证 |
| 数据导入 | CSV/TSV 导入为表(data files + tables.import) | 路由 api/db/v0/data_files/ 与 RPC tables.get_import_preview/tables.import 实测存在 |
| 公开表单 | 生成可匿名提交的数据收集表单(forms.*,支持发布/令牌) | RPC 方法清单含 forms.add/set_publish_public/submit 等 11 个方法 |
| 匿名分析上报开关 | 可选的匿名使用统计(analytics.get_state/initialize/disable) | RPC 方法实测存在,上报地址指向 analytics.mathesar.dev(production settings 实证) |
| 多语言界面 | 英/西/法/日 | 登录页 common-data JSON "supported_languages": {"en","es","fr","ja"} 实测 |
| 健康检查端点 | /healthz/ready/ 与 /healthz/live/ | curl http://localhost:8128/healthz/ready/ 返回 200 {"status": "ok"} 实测 |
版本亮点:0.12.0 的 SSO_CONFIG_DICT 为新的 SSO 配置入口,旧的 OIDC_CONFIG_DICT 保留为向后兼容别名(官方 compose 文件注释原文 "deprecated, use SSO_CONFIG_DICT",settings 源码中两者均可读取),这让 SSO 从「只会 OIDC」升级为「OIDC + GitHub 双 provider」。
五、快速开始(最小可用示例)
本节给一条不依赖图形界面的最小验证链:登录 → 确认数据库 → 读一张表。假定你已按部署指南把 Mathesar 跑在本机 8128 端口、并完成了首次安装向导(创建管理员 admin)。演示账号使用 admin / q1w2e3r4。
第一步,用 curl 带 CSRF 令牌登录,拿到会话 Cookie:
# 访问登录页取 CSRF 令牌(-c 把 Cookie 存到 cj.txt)
csrf=$(curl -s -c cj.txt http://localhost:8128/auth/login/ \
| grep -oP 'name="csrfmiddlewaretoken" value="\K[^"]+' | head -1)
# 提交登录表单(302 跳转到 / 即成功)
curl -s -b cj.txt -c cj.txt -o /dev/null -w 'login: %{http_code}\n' \
-X POST http://localhost:8128/auth/login/ \
--data-urlencode "csrfmiddlewaretoken=$csrf" \
--data-urlencode "username=admin" \
--data-urlencode "password=q1w2e3r4" \
-H "Referer: http://localhost:8128/auth/login/"
实测回显:
login: 302
第二步,调用 JSON-RPC 端点确认已配置的数据库(未登录直接调会得到认证错误,见下文第(注)说明):
# 批量调用:列数据库 + 读 employees 表前 2 行
curl -s -b cj.txt -X POST http://localhost:8128/api/rpc/v0/ \
-H 'Content-Type: application/json' -d '[
{"id":1,"jsonrpc":"2.0","method":"databases.configured.list","params":{}},
{"id":2,"jsonrpc":"2.0","method":"records.list","params":{"database_id":1,"table_oid":17574,"limit":2}}
]'
实测回显(节选):
[{"id": 1, "jsonrpc": "2.0", "result": [{"id": 1, "name": "warehouse", "server_id": 1, "last_confirmed_sql_version": "0.12.0", "needs_upgrade_attention": false, "nickname": "仓储示例库"}]},
{"id": 2, "jsonrpc": "2.0", "result": {"count": 2, "results": [{"1": 1, "2": "关羽", "3": 9500.75, "4": "2023-04-01 AD", "5": 1}, {"1": 2, "2": "张飞", "3": 8100, "4": "2023-07-15 AD", "5": null}], "linked_record_summaries": {"5": {"1": "骑兵部"}}}}]
(注)认证边界实测:不带 Cookie 直接 POST /api/rpc/v0/ 时,HTTP 状态码仍为 200,但返回体是 JSON-RPC 错误:
[{"id": 1, "jsonrpc": "2.0", "error": {"code": -32603, "message": "Authentication failed when calling \"databases.configured.list\""}}]
第三步,浏览器打开 http://localhost:8128/,未登录会被 302 重定向到 /auth/login/?next=/(实测重定向地址),登录后即进入库/表导航界面。到这里,最小验证链完成:说明 Mathesar 的 Web 入口、会话认证与数据面 API 全部可用。
六、适用场景与限制
典型场景(官网明确列出的五类 + 本文补充判断):
- 资产/库存管理(Asset or Inventory Management):给非技术同事一个录入、更新、检索资产的前端,权限仍由 PG 控制。
- 客服/工单数据维护(Customer Support):把工单表开放给运营团队增删改查。
- 可分享的数据看板(Shareable Data Dashboard):用 Explorations 固化查询,链接给需要的人。
- 拨款/资助跟踪(Grant Tracking and Management)、工时管理(Timesheet Management):官网列举的另外两类结构化记录管理场景。
- DBA 的「安全前端」:让业务部门直接操作 PG 库,但收走服务器 SSH 与 psql 权限——数据留在原地、权限沿用 PG 角色,这是 Mathesar 相对「导出 CSV 发来发去」或「自研管理后台」的核心价值。
明确限制(逐条有据):
- 只支持 PostgreSQL:官网定位原文即 "for Postgres databases";RPC 全部方法围绕 PG 的 OID/schema 体系设计,无法接 MySQL/SQLite。
- 0.x 版本阶段:最新 0.12.0(2026-07-02),官方尚未发布 1.0,升级时需关注 release notes;实例内每个库记录
last_confirmed_sql_version(实测0.12.0)与needs_upgrade_attention标志,就是为 SQL 层升级追踪设计的。 - GPL-3.0 许可证:对「把 Mathesar 改造后嵌入自家闭源产品分发」的集成方有传染性约束(GPL-3.0 LICENSE 文件实证);纯自托管内部使用不受影响。
- 连接外部库需要网络可达:Mathesar 服务必须能直接连通目标 PG 的 host:port(本文实测中外部 PG 16.15 实例与 Mathesar 同网络部署才连通)。
七、同类选型对比
围绕「表格化数据管理 UI」这一品类,选取三个最常被对比的开源竞品。所有星数取自 shields.io 徽章服务(其数据源为 GitHub API)、版本号取自 shields.io /github/v/tag 徽章、许可证取自各仓库根 LICENSE 文件实抓,查询日期统一为 2026-10-30:
| 维度 | Mathesar 0.12.0 | NocoDB | Baserow | Teable |
|---|---|---|---|---|
| GitHub Stars | 5.2k | 65k | 6.2k | 22k |
| 最新版本 | 0.12.0(2026-07-02) | v2026.10.1 | v2.4.1 | release.2026-10-30T09-29-42Z.3673(滚动 tag) |
| 许可证 | GPL-3.0(单一许可证,无分区) | 自定义 LICENSE(文件头实测 "License — Updated on: January 29, 2026",shields.io 许可证探测无法识别为标准许可证) | MIT Expat(核心),premium/、enterprise/ 目录单独许可 | 主体 AGPL-3.0,packages/ 目录 MIT |
| 数据存放模型 | 直存 PG,数据即标准 PG 表 | 抽象层(自建数据模型,支持多数据源外连) | 抽象层(Postgres 基座 + 自建模型) | 抽象层(Postgres 基座 + 自建模型) |
| 技术栈 | Python/Django + Svelte 构建产物 | Node.js | Python/Django + Vue | NestJS + React |
| 支持数据库 | 仅 PostgreSQL | 多种(MySQL/PG/SQLite 等) | 主要 Postgres | 主要 Postgres |
| 权限模型 | 直接沿用 PG 角色/权限(无第二层权限体系) | 自建工作区/基表权限 | 自建工作区权限 | 自建空间权限 |
| 维护主体 | 501(c)(3) 非营利基金会 | 商业公司 | 商业公司(Baserow B.V.) | 商业公司(Teable, Inc.) |
| 版本节奏(近 9 个月) | 8 个 release,约 5~6 周一版 | 日期式高频发版(如 2026.10.1) | 2.x 常规迭代 | 滚动日期 tag |
💡 技术拓展:上表「数据存放模型」一列是选型的第一分水岭。直存派(Mathesar)胜在数据零锁定、DBA 友好、权限天然复用 PG;抽象派(NocoDB/Baserow/Teable)胜在视图类型丰富(看板/甘特/表单视图等)、协作体验更接近 Airtable。若你的数据必须始终是「标准 PG 表、可随时用 psql 接管」,选 Mathesar;若你要的是「Airtable 平替」的多视图协作体验,抽象派更合适。
量化选型建议:
- 社区规模上 NocoDB(65k)>> Teable(22k)> Baserow(6.2k)≈ Mathesar(5.2k),但 Mathesar 与 Baserow 处于同一量级,且 Mathesar 是四者中唯一「非商业公司维护 + 单一 GPL-3.0 + 数据零抽象」的组合。
- 许可证敏感场景(如银行、政企内网再分发):Mathesar 的 GPL-3.0 边界最清晰(整仓一个许可证);Baserow/Teable 是「开源核心 + premium 目录」的 open-core 结构,NocoDB 使用自定义 LICENSE 文本,合规评估成本更高。
- 已有 PG 运维体系的团队:Mathesar 不引入第二套权限与数据模型,DBA 用
pg_roles即可管住所有入口;这是它与三个抽象派竞品最本质的差异。
八、参考链接
- 官网:https://www.mathesar.org/ (定位文案、场景列表、非营利声明来源,查询日期 2026-10-30)
- 代码仓库:https://github.com/mathesar-foundation/mathesar
- 官方文档:https://docs.mathesar.org/
- Releases(版本节奏数据来源):https://github.com/mathesar-foundation/mathesar/releases
- 0.12.0 发布页:https://github.com/mathesar-foundation/mathesar/releases/tag/0.12.0
- 竞品星数/版本徽章(查询日期 2026-10-30):https://img.shields.io/github/stars/mathesar-foundation/mathesar.json (NocoDB/Baserow/Teable 同理替换仓库名)
- 竞品仓库:https://github.com/nocodb/nocodb 、https://github.com/baserow/baserow 、https://github.com/teableio/teable