Mathesar 表管理实战指南:PostgreSQL 数据表的创建、维护与表级权限控制
数据库后端前端协作【免费下载链接】mathesarAn intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access control.项目地址https://gitcode.com/gh_mirrors/ma/mathesar点击查看免费下载本文以 Mathesar 官方用户指南《Tables》为核心系统讲解在 Mathesar 中如何理解、创建、重命名、删除数据库表如何为表添加 PostgreSQL 存储的描述信息以及如何通过「Table Permissions」界面管理表的 Owner 与七种表级授权权限。读者将掌握从界面操作到 RPC 调用链、再到底层msarSQL 函数的完整表管理知识并了解访问控制对表操作的约束边界。什么是表Table所有关系型数据库——包括 PostgreSQL——都以「表」table也常被称为 relation为基本载体来组织数据。一张表由行rows、列columns和单元格cells构成。如果把一个数据库比作一个包含多个工作表sheets的电子表格文件那么一个数据库通常会包含若干张表甚至几十张表。与大多数电子表格不同数据库中的表之间通常是高度互联的。在数据库中relationships关系 提供了一种稳健的机制让一个单元格可以引用另一张表中的某一行记录。通过合理利用关系我们可以用多张相互链接的表来建模复杂的数据结构——这正是关系数据库的核心理念数据规范化normalization。补充Mathesar 的表结构信息以 PostgreSQL 的oid为唯一标识符。在 RPC 层 中TableInfo数据结构同时携带oid、name、schema所属 schema 的 oid、description、owner_oid、current_role_priv当前角色在表上拥有的权限列表、current_role_owns当前角色是否为表的所有者以及对象类型table/view/materialized_view。管理表增、删、改名与描述Mathesar 允许你在**数据库页面database page**中直接完成表的增、删、改名操作还能为表添加描述信息。这些描述会被写入 PostgreSQL 的COMMENT语句中存储详见 PostgreSQL COMMENT 文档因此任何通过其他工具连接数据库的人都能看到这些注释。需要注意你能否修改表取决于 access control访问控制 的约束——例如只有表的 Owner 才能重命名表、修改表描述见下文「表权限」一节。创建表在数据库页面中Mathesar 提供「新建表」入口对应前端 CreateTableForm.svelte 表单可填写表名name必填且不能与当前 schema 中已有表重名前端会做唯一性校验重名时提示「table name already exists」描述description可选最终写入 PostgreSQL COMMENT主键列primary key column默认列名为id、类型为IDENTITY可通过折叠面板自定义列名与列类型。后端层面创建表的请求最终走tables.addRPC 方法见 mathesar/rpc/tables/base.py其核心参数包括参数含义schema_oid新表所在 schema 的 OIDtable_name新表名称pkey_column_info新表主键列的描述名称与类型column_data_list按顺序创建的其他列描述constraint_data_list需要一并创建的约束描述owner_oid新表的所有者角色 OID为空则当前角色即为 Ownercomment新表的 COMMENT 描述该方法内部调用 db/tables.py 的create_table_on_database最终执行msar.add_mathesar_table数据库函数完成建表并把新表的主键列attnum记录到 Mathesar 的元数据中mathesar_added_pkey_attnum见 tables/metadata.py。重命名表与编辑描述进入表页面后在右侧**表检查器table inspector**的「Table」标签页中可以编辑表名与描述对应前端 TableName.svelte 与TableDescription。这些操作会调用tables.patchRPCmathesar/rpc/tables/base.py其SettableTableInfo支持以下字段name新表名传null视为不修改description表描述传null会清空描述columns列变更列表。底层由db.tables.alter_table_on_database调用msar.alter_table函数执行。删除表删除操作同样位于表检查器或数据库页面的表卡片上。删除前 Mathesar 会弹出确认对话框见 TableActions.svelte 中的handleDeleteTable与 TableCard.svelte确认后调用tables.deleteRPCmathesar/rpc/tables/base.py。# 删除一个表cascade 控制是否级联删除依赖对象 delete(*, table_oid: int, database_id: int, cascade: bool False) - str底层调用msar.drop_table见 db/tables.py返回被删除表的完整限定名。当表被其他对象如视图、外键约束依赖时cascadeTrue会一并删除依赖对象请谨慎使用。表权限Table PermissionsPostgreSQL 的权限模型分为「所有权ownership」与「授予的权限granted privileges」两层。Mathesar 完整尊重这套模型并提供了可视化的权限管理界面。Owner表的所有者在 PostgreSQL 中每张表都有一个角色被设定为其 所有者owner。只有 Owner 可以执行以下操作删除Drop表修改Alter表的列管理表级权限转移所有权transfer ownership注意即使通过权限授予某些操作依然只对 Owner 开放无法授权给其他角色。例如「给表新增列」这一操作没有对应的可授权权限——正如 roles.md 中所强调的非 Owner 角色无法通过任何授权方式获得「改表结构」的能力。Granted Privileges可授予的七种表级权限除所有权外以下权限可以被授予给特定角色来自 tables.md 原文 与 db/sql/05_msar.sql 中msar.list_table_privileges的实现权限作用SELECT允许读取表中的数据INSERT允许在表中创建新记录UPDATE允许更新表中已有记录DELETE允许删除表中的记录TRUNCATE允许一次性清空表中所有记录REFERENCES允许创建引用reference该表的外键约束TRIGGER允许在表上创建触发器这一权限集合与 RPC 层 TableInfo 中current_role_priv字段的类型定义一一对应也与前端 TablePermissionsModal.svelte 中allPrivileges配置完全一致。在 PostgreSQL 中上述权限的官方说明可参见 PostgreSQL 文档 DDL Privileges。表权限的界面操作要管理某张表的 Owner 与授予权限进入表页面table page点击右上角的Table Permissions按钮即可。该按钮位于表检查器的「Table」标签页内见 TableMode.svelte由权限弹窗 TablePermissionsModal.svelte 承载支持三类操作权限总览PermissionsOverview以「读read/ 写write」两级访问模式快速配置角色权限。其中read级别 仅SELECTwrite级别 SELECT INSERT UPDATE DELETE默认访问级别为read也可按需勾选TRUNCATE、REFERENCES、TRIGGER等更细粒度的权限。转移所有权TransferOwnership把表的 Owner 切换为其他角色。帮助与文档弹窗内内置「Table Permissions」文档链接与权限说明。保存权限时会调用tables.privileges.replace_for_rolesRPCmathesar/rpc/tables/privileges.py。该方法的语义是全量替换传入的direct列表中包含的权限会被GRANT未包含的权限会被REVOKE仅影响被传入的角色。底层通过 db/roles.py 调用msar.replace_table_privileges_for_rolesSQL 函数执行实际的授权/回收。转移所有权的 RPC 为tables.privileges.transfer_ownershipmathesar/rpc/tables/privileges.py。源码注释明确指出成功转移需满足三个前提当前用户是表的超级用户或 Owner当前角色是目标新 Owner 角色的MEMBER即能SET ROLE到新 Owner当前角色在表所在 schema 上拥有CREATE权限。底层实现msar权限函数从源码结构看表级权限能力由数据库层的msarschema 提供这些函数由 Mathesar 首次连接数据库时自动安装见 schemas.mdmsar.list_table_privileges(tab_id regclass)返回表中所有直接授予的、非默认的表权限格式为[{role_oid: int, direct: [str]}, ...]。其实现直接查询pg_catalog.pg_class的relacl并用aclexplode展开 ACL同时排除pg_%系统角色db/sql/05_msar.sqlmsar.list_table_privileges_for_current_role(tab_id)用于返回当前角色的权限列表供界面判断用户能否读写数据db/sql/05_msar.sqlmsar.replace_table_privileges_for_roles批量 GRANT/REVOKE 表权限msar.transfer_table_ownership转移表所有权。对应的 RPC 与 SQL 函数均有完整的测试覆盖可参考 mathesar/tests/rpc/test_table_privileges.py验证list_direct、replace_for_roles、transfer_ownership三个 RPC 方法的参数传递以及 db/sql/test_sql_functions.sql验证msar.list_table_privileges返回的权限集合与角色 OID。权限如何影响表操作理解表权限后再回头看「管理表」一节中的操作就能明白其背后的限制创建/删除/重命名表、修改列结构本质是结构变更通常要求当前角色是表 Owner或在 schema 上拥有CREATE权限增删改查数据分别对应INSERT、DELETE、UPDATE、SELECT权限——这也是 Mathesar 表页面的「Actions」区如 TableActions.svelte 中的导入、导出、数据探索等入口能够显示或禁用的依据关系外键约束的创建依赖REFERENCES权限同时 Mathesar 在创建引用列时会自动在 PostgreSQL 中建立外键约束详见 relationships.md。此外Mathesar 的元数据metadata如表描述、列顺序、记录摘要模板等见 tables/metadata.py与数据探索explorations目前对数据库的所有协作者均可读写不受 PostgreSQL 角色权限或用户 admin 状态限制——若你需要对此类元数据做访问限制可在 access-control.md 中了解当前模型后到项目 issue 中反馈使用场景。小结与延伸阅读本文覆盖了 Mathesar 中表的三大主题表的本质行、列、单元格与关系建模表的生命周期管理创建含主键列配置、重命名、编辑描述存储为 PostgreSQL COMMENT、删除支持级联表权限体系Owner 专属操作清单、七种可授予权限SELECT/INSERT/UPDATE/DELETE/TRUNCATE/REFERENCES/TRIGGER以及通过「Table Permissions」弹窗进行权限总览、批量授权与所有权转移的完整操作路径并下沉到 RPC 与msarSQL 层验证其实现。如需深入推荐继续阅读仓库中的相关文档与源码关系Relationships外键约束、引用列、记录摘要与记录选择器PostgreSQL 角色Roles角色所有权、继承与共享所有权的完整模型访问控制Access ControlMathesar 用户、PostgreSQL 角色、Stored Roles 与协作者的关系RPC 表接口 与 表权限 RPC表管理全部 RPC 方法的参数与语义msar 权限 SQLlist_table_privileges等函数的权威实现表权限前端实现权限弹窗的读/写访问级别配置。赞分享数据库后端前端协作【免费下载链接】mathesarAn intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access control.项目地址https://gitcode.com/gh_mirrors/ma/mathesar点击查看免费下载相关推荐PostgreSQL分区表管理pgAdmin4创建与维护指南PostgreSQL分区表管理pgAdmin4创建与维护指南 你是否还在为PostgreSQL大数据量表的性能问题发愁分区表Partition Table数据库客户端后端前端桌面应用Apache Pinot表管理终极指南如何创建、配置和维护数据表Apache Pinot表管理终极指南如何创建、配置和维护数据表 Apache Pinot作为开源的分布式分析引擎在处理PB级别数据时提供了卓越的实时查询能数据库OLAP大数据实时分析c3.js权限控制图表数据的访问权限管理c3.js权限控制图表数据的访问权限管理 你是否曾担心敏感数据通过图表泄露在数据可视化场景中不同用户角色应访问不同数据范围。本文将结合c3.js图表库通数据可视化上一篇Trigger.dev CLI 完全指南创建、本地运行与云端部署 v3 后台任务下一篇CC自动注册插件终极指南如何用cc-register快速简化组件开发流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

HashMap底层原理:从数据结构到扩容机制全解析

HashMap底层原理:从数据结构到扩容机制全解析

“你先说说HashMap的底层原理吧。” 这个问题我既被问过,也拿来问过别人。十个候选人里,能在一分钟内说出“数组加链表”的大概有七八个,能接着讲出红黑树、扩容、哈希扰动的,可能只有两三个。真正能把设计动机、版本差异、并发问…

2026/10/13 12:23:18 阅读更多 →
关系模型实战指南:从二维表到业务稳定性的底层逻辑

关系模型实战指南:从二维表到业务稳定性的底层逻辑

1. 这不是教科书里的“关系”,而是你每天都在用的数据组织逻辑“关系模型的基本概念”——看到这八个字,很多人第一反应是大学数据库课上那个被粉笔灰笼罩的下午,黑板上写着“实体、属性、域、键”,讲台下有人偷偷刷手机&#xff…

2026/10/13 12:22:17 阅读更多 →
Qt国际化翻译完整实践:从tr()到动态语言切换

Qt国际化翻译完整实践:从tr()到动态语言切换

做Qt开发这么多年,遇到最多的问题不是功能写不出来,而是功能做完以后客户说看不懂。于是QT国际化翻译就成了绕不开的环节。表面上看,这事只是把界面文字换成英文、日文,真正做起来却涉及源码扫描、翻译文件管理、运行时加载、动态…

2026/10/13 12:22:17 阅读更多 →

最新新闻

迷你SQL 2000轻量数据库:DLL清单、部署与排错指南

迷你SQL 2000轻量数据库:DLL清单、部署与排错指南

简介:迷你SQL 2000是一款面向Windows平台的轻量级数据库管理系统,适配WINXP、WIN7及WIN10的32位与64位环境,适合个人用户与小型企业解决低资源占用下的数据存储与管理需求。它可视为SQL Server 2000的精简版本,保留数据库引擎与基…

2026/10/13 13:01:12 阅读更多 →
技术博客标题缺失:t3code无法解析的合规性说明

技术博客标题缺失:t3code无法解析的合规性说明

我无法根据“t3code”这一标题生成符合要求的博文内容。原因如下:标题信息严重不足: “t3code”本身不具备明确语义,既非广为人知的开源项目(如未在GitHub、NPM、官方文档或主流技术社区中形成共识性指代),…

2026/10/13 13:01:12 阅读更多 →
揭秘市面上那些热门的SEO优化服务机构!

揭秘市面上那些热门的SEO优化服务机构!

痛点深度剖析我们团队在实践中发现,当前SEO优化行业存在诸多难题。众多客户反馈,做了半年的SEO优化,关键词排名毫无提升,对SEO效果产生质疑,技术白皮书显示,多数传统SEO见效周期长,流量获取成本…

2026/10/13 13:01:12 阅读更多 →
t3code 跨平台工具链实战:Electron 桌面端与 CLI 安装配置全指南

t3code 跨平台工具链实战:Electron 桌面端与 CLI 安装配置全指南

1. 从 t3code 这个关键词说起:它到底指什么第一次看到 "t3code" 这个词,很多人会一头雾水。它不像 "vscode" 那样有明确的官方定义,也不像某个知名框架那样有完整的文档站。从热词组合来看,t3code 更像是一个…

2026/10/13 13:01:12 阅读更多 →
感知机入门:从零实现到多层感知机突破异或问题

感知机入门:从零实现到多层感知机突破异或问题

感知机(Perceptron)是神经网络最初的模样,也是很多人入门深度学习时绕不过去的第一个模型。说它门槛低,是因为你只要会加权求和,再写一个 if 判断,就能把一个感知机跑起来;说它后劲大&#xff0…

2026/10/13 13:01:12 阅读更多 →
Unity水下波光Shader:动态折射与材质自适应光照实现

Unity水下波光Shader:动态折射与材质自适应光照实现

1. 这个效果到底在解决什么问题:水面光影的“动态欺骗”本质很多人看到“Unity Shader实现水中波光照射动物身上的效果”这个标题,第一反应是:“不就是加个高光贴图或者用个Blinn-Phong算一下反射吗?”——这恰恰是踩进第一个认知…

2026/10/13 13:00:12 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →