当前位置: 首页 > article >正文

PostgreSQL 表结构解析与权限管理实战指南

1. PostgreSQL表结构深度解析第一次接触PostgreSQL的表结构时我也被那一堆元数据搞得头晕眼花。但后来发现只要掌握几个关键点就能像老中医把脉一样快速诊断表结构问题。PostgreSQL的表结构信息主要存储在系统目录表中我们可以通过多种方式来查看。最常用的就是\d命令这个命令就像给你的数据表拍X光片能把表的所有细节都展示出来。比如我们有个图书管理系统的books表test# \d books 数据表 public.books 栏位 | 类型 | Collation | Nullable | Default | 存储 | 统计目标 | 描述 ------------------------------------------------------------------------------------------------- id | integer | | not null | nextval(books_id_seq::regclass) | plain | | client | text | | not null | | extended | | data | jsonb | | not null | | extended | | 索引 books_pkey PRIMARY KEY, btree (id)这个输出信息量很大我来拆解下关键部分栏位就是表的列名这里看到有id、client、data三列类型每列的数据类型integer、text、jsonb等Nullable是否允许空值not null表示必须有值Default默认值id列使用了序列作为默认值存储数据的物理存储方式plain表示普通存储extended表示可能使用TOAST技术压缩2. 通过SQL查询表结构元数据有时候我们需要在程序里获取表结构信息这时候就不能用命令行工具了得用SQL查询系统表。PostgreSQL提供了information_schema这个标准化的元数据视图兼容性最好。比如要查看books表的所有列信息SELECT column_name, data_type, character_maximum_length, is_nullable, column_default FROM information_schema.columns WHERE table_name books;这个查询会返回每列的名称、数据类型、最大长度、是否可为空和默认值。我在实际项目中经常用这个查询来动态生成表单或做数据校验。更底层的做法是直接查询pg_catalog系统表能获取更多PostgreSQL特有的信息SELECT a.attname AS column_name, pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type, a.attnotnull AS not_null, pg_catalog.pg_get_expr(ad.adbin, ad.adrelid) AS default_value FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_attrdef ad ON (a.attrelid ad.adrelid AND a.attnum ad.adnum) WHERE a.attrelid books::regclass AND a.attnum 0 AND NOT a.attisdropped ORDER BY a.attnum;这个查询能获取更详细的列信息包括PostgreSQL特有的数据类型修饰符。我在做数据库迁移工具时就用了这个方法获取精确的表结构。3. 表权限管理实战技巧权限管理是数据库安全的重中之重。记得有一次我们系统被入侵就是因为一个测试账号权限过大。从那以后我对权限管理就特别上心。最快捷的查看表权限的方法是使用\z命令test# \z books 存取权限 架构模式 | 名称 | 类型 | 存取权限 | 列特权 | 策略 ------------------------------------------------------------------ public | books | 数据表 | postgresarwdDxt/postgres| | | | | alicerw/postgres | | (1 行记录)这里的arwdDxt是PostgreSQL的权限缩写aINSERTrSELECTwUPDATEdDELETEDTRUNCATExREFERENCEStTRIGGER在SQL层面我们可以查询information_schema.role_table_grants视图SELECT grantee, string_agg(privilege_type, , ) AS privileges FROM information_schema.role_table_grants WHERE table_name books GROUP BY grantee;这个查询会按用户分组显示权限输出类似grantee | privileges ------------------------------------ alice | SELECT, UPDATE postgres| SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER4. 高级权限管理场景在实际项目中我们经常需要更精细的权限控制。比如只允许用户访问表的特定列或者限制他们只能看到符合条件的数据行。列级权限控制可以通过GRANT命令实现GRANT SELECT (id, client) ON books TO analyst;这样analyst用户就只能查询id和client列看不到data列的内容。我在金融项目中就用这个功能实现了敏感数据的列级保护。行级安全策略是PostgreSQL 9.5引入的强大功能ALTER TABLE books ENABLE ROW LEVEL SECURITY; CREATE POLICY user_books_policy ON books FOR ALL TO PUBLIC USING (client current_user);这个策略确保用户只能看到client字段等于自己用户名的记录。我们在多租户系统中广泛使用这个特性一个物理表就能安全地服务多个客户。权限管理中最容易踩的坑是权限继承。PostgreSQL中角色可以继承其他角色的权限如果不小心可能会造成权限泄露。我建议用以下查询定期检查权限继承关系SELECT r.rolname AS role, m.rolname AS member, CASE WHEN m.admin_option THEN YES ELSE NO END AS admin FROM pg_catalog.pg_auth_members am JOIN pg_catalog.pg_roles r ON am.roleid r.oid JOIN pg_catalog.pg_roles m ON am.member m.oid ORDER BY 1, 2;这个查询能显示所有角色之间的成员关系帮助我们发现意外的权限继承。

相关文章:

PostgreSQL 表结构解析与权限管理实战指南

1. PostgreSQL表结构深度解析 第一次接触PostgreSQL的表结构时,我也被那一堆元数据搞得头晕眼花。但后来发现,只要掌握几个关键点,就能像老中医把脉一样快速诊断表结构问题。PostgreSQL的表结构信息主要存储在系统目录表中,我们可…...

ChineseOCR文字方向检测终极指南:智能校正0°、90°、180°、270°旋转文字

ChineseOCR文字方向检测终极指南:智能校正0、90、180、270旋转文字 【免费下载链接】chineseocr yolo3ocr 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr 在中文OCR识别领域,ChineseOCR项目凭借其强大的文字方向检测功能脱颖而出&…...

告别命令行GDB!用CLion远程调试Linux C++程序,像本地开发一样丝滑

告别命令行GDB!用CLion远程调试Linux C程序,像本地开发一样丝滑 在Windows环境下开发Linux服务器程序,一直是C工程师的痛点。传统方式要么在虚拟机里搭建完整开发环境,要么用命令行GDB远程调试——前者资源消耗大,后者…...

《现代密码学理论与实践》中英文版:深入理解与实践应用

《现代密码学理论与实践》中英文版:深入理解与实践应用 密码学的起源与发展 密码学的历史可以追溯到古代,当时主要使用简单的替换和置换方法来加密信息。随着计算机技术的出现,密码学实现了质的飞跃,演变成了现在的复杂算法和协议…...

Mi-Create:5分钟打造专属小米穿戴表盘的终极免费工具

Mi-Create:5分钟打造专属小米穿戴表盘的终极免费工具 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了小米手环上那些千篇一律的默认表…...

终极英雄联盟回放播放器:ROFL-Player完全使用指南

终极英雄联盟回放播放器:ROFL-Player完全使用指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为无法播放旧版本英雄…...

空洞骑士模组管理终极指南:用Scarab实现一键安装和智能管理

空洞骑士模组管理终极指南:用Scarab实现一键安装和智能管理 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》设计的现代化模组管理器&…...

LeetCodehot100-34. 在排序数组中查找元素的第一个和最后一个位置

class Solution { public:int search(vector<int>& nums, int target){//>int left0,rightnums.size()-1;while(left<right){int midleft(right-left)/2;if(nums[mid]<target) leftmid1;else rightmid-1;}return left;}//[0, left-1] 中的所有元素都 < t…...

3个实战技巧:如何用Fluent.Ribbon让你的WPF应用拥有专业Office界面

3个实战技巧&#xff1a;如何用Fluent.Ribbon让你的WPF应用拥有专业Office界面 【免费下载链接】Fluent.Ribbon WPF Ribbon control like in Office 项目地址: https://gitcode.com/gh_mirrors/fl/Fluent.Ribbon Fluent.Ribbon是一个专为WPF应用程序设计的开源控件库&am…...

告别CAN总线?手把手教你用ISO 13400和DoIP实现车载远程诊断(附Python示例)

从CAN到以太网&#xff1a;基于ISO 13400的DoIP诊断实战指南 当传统CAN总线在带宽和远程诊断需求面前逐渐力不从心&#xff0c;车载以太网正以百兆甚至千兆的传输速率重塑车辆电子架构。作为诊断协议的新载体&#xff0c;DoIP&#xff08;Diagnostic over Internet Protocol&am…...

H5playerV2.1.2实战:5分钟搞定跨域播放器集成(含常见报错解决方案)

H5playerV2.1.2实战&#xff1a;5分钟搞定跨域播放器集成&#xff08;含常见报错解决方案&#xff09; 在视频监控、在线教育、直播平台等Web应用中&#xff0c;H5player凭借其无需插件、跨平台兼容的特性成为主流播放方案。但实际集成时&#xff0c;开发者常被跨域配置、HTTPS…...

你的小米路由器在‘隔离’设备吗?详解无线加密模式如何影响局域网互访

小米路由器无线加密模式对局域网互访的影响与解决方案 家里的小米路由器突然让所有设备"形同陌路"&#xff1f;明明连着同一个WiFi&#xff0c;手机传文件给电脑却像隔了堵墙&#xff0c;智能家居设备集体失联&#xff0c;甚至局域网游戏都卡在连接界面——这可能是路…...

三菱机床FTP程序传输:从参数配置到实战调用的完整指南

1. 三菱机床FTP程序传输基础概念 第一次接触三菱机床的FTP功能时&#xff0c;我也是一头雾水。机床还能联网传文件&#xff1f;这不是电脑才有的功能吗&#xff1f;后来在实际工作中才发现&#xff0c;这个功能简直是生产现场的"救命稻草"。想象一下&#xff0c;当你…...

别再为点云数据交换发愁了!手把手教你用E57格式搞定多平台协作

E57格式&#xff1a;点云数据跨平台协作的终极解决方案 在建筑信息模型&#xff08;BIM&#xff09;、地理信息系统&#xff08;GIS&#xff09;和工业测量领域&#xff0c;点云数据已成为数字化工作流的核心组成部分。然而&#xff0c;当项目涉及多个团队、不同品牌的扫描设备…...

星际蜗牛矿机变家庭影院:用群晖Docker部署Jellyfin的完整避坑记录

星际蜗牛矿机变家庭影院&#xff1a;用群晖Docker部署Jellyfin的完整避坑记录 去年在二手市场淘了台星际蜗牛矿机&#xff0c;原本打算当个下载机用&#xff0c;没想到这台不到500元的设备竟成了我家的影音中枢。从矿渣到NAS再到4K流媒体服务器&#xff0c;整个过程踩坑无数&am…...

HEIF Utility:Windows平台处理苹果HEIF图片的完整解决方案

HEIF Utility&#xff1a;Windows平台处理苹果HEIF图片的完整解决方案 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 对于使用iPhone拍摄照片的Windows用户来说…...

Windhawk:模块化Windows系统个性化定制的完整解决方案

Windhawk&#xff1a;模块化Windows系统个性化定制的完整解决方案 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否曾对Windows系统的默认界面感到…...

2026年学术写作中AI工具的辅助边界与合理用法

在学术写作讨论中&#xff0c;常有人提出以下疑问&#xff1a;- AI能否直接生成毕业论文全文&#xff1f;- AI写的内容能否通过导师或评审审阅&#xff1f;- 有没有“生成即可提交”的工具&#xff1f;这些问题反映出一种现实&#xff1a;写作者并非不愿付出努力&#xff0c;而…...

终极画中画扩展使用指南:一键实现Chrome多窗口视频播放

终极画中画扩展使用指南&#xff1a;一键实现Chrome多窗口视频播放 【免费下载链接】picture-in-picture-chrome-extension 项目地址: https://gitcode.com/gh_mirrors/pi/picture-in-picture-chrome-extension Chrome画中画扩展是一个基于原生Picture-in-Picture API构…...

从选型到避坑:光电倍增管PMT实战指南(附Hamamatsu、ETL等型号对比)

光电倍增管PMT选型与实战&#xff1a;工程师视角的深度解析 在微弱光信号检测领域&#xff0c;光电倍增管&#xff08;PMT&#xff09;凭借其极高的灵敏度和低噪声特性&#xff0c;依然是许多高端应用的首选探测器。无论是荧光光谱分析、粒子物理实验还是激光雷达系统&#xff…...

什么是QClaw?基于OpenClaw的极简封装,QClaw下载、安装、配置全指南

适用版本&#xff1a;QClaw v1.0.0&#xff08;2026年4月最新稳定版&#xff09; 核心定位&#xff1a;OpenClaw的极简封装版&#xff0c;去掉所有复杂的企业功能&#xff0c;专注于个人用户的轻量级、开箱即用AI助手&#xff0c;资源占用降低60%&#xff0c;新手5分钟即可上手…...

CSS Flexbox高级布局技巧与实战

CSS Flexbox高级布局技巧与实战 引言 CSS Flexbox&#xff08;弹性布局&#xff09;是现代前端开发中最常用的布局技术之一&#xff0c;它提供了一种灵活的方式来布局、对齐和分配容器内项目的空间。本文将深入探讨Flexbox的高级技巧和实战应用&#xff0c;帮助你掌握这一强大的…...

Python全栈入门到实战【进阶篇 11】Python线程池编程:从入门到实战(附批量爬虫/文件处理实战)

前言 在上一节中&#xff0c;我们掌握了多线程基础用法&#xff0c;但手动创建、管理线程时会遇到“频繁创建销毁线程开销大、线程数失控、管理逻辑复杂”等问题——而线程池是解决这些问题的最优方案&#xff0c;它是企业级并发编程中最常用的工具&#xff0c;也是Python进阶…...

RK3588设备树移植实战:从零到一构建自定义板级支持包

1. RK3588设备树移植入门指南 如果你正在为基于RK3588芯片的自研硬件平台构建板级支持包&#xff08;BSP&#xff09;&#xff0c;设备树移植是绕不开的关键环节。设备树&#xff08;Device Tree&#xff09;就像硬件的"身份证"&#xff0c;它用文本格式描述硬件配置…...

Nginx Proxy Manager中文版终极指南:3分钟快速上手免费反向代理工具

Nginx Proxy Manager中文版终极指南&#xff1a;3分钟快速上手免费反向代理工具 【免费下载链接】nginx-proxy-manager-zh 基于nginx-proxy-manager翻译的中文版本 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh Nginx Proxy Manager中文版是一款…...

GitHub中文插件终极指南:3分钟让GitHub界面说中文的完整教程

GitHub中文插件终极指南&#xff1a;3分钟让GitHub界面说中文的完整教程 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾经在…...

中空板生产线厂家

深耕挤出装备二十载 铸就全球领军品牌 大连欣科机器有限公司&#xff0c;专注塑料挤出装备研发制造二十余年&#xff0c;是全球中空板生产线市场占有率第一的行业领军者&#xff0c;拥有自己的加工中心车间。 大连欣科现拥有130余名专业职工&#xff0c;配备完善检测手段&#…...

OpenBMC烧录避坑指南:从镜像下载到SD卡写入的完整流程

OpenBMC烧录避坑指南&#xff1a;从镜像下载到SD卡写入的完整流程 在嵌入式系统开发中&#xff0c;OpenBMC作为开源基板管理控制器解决方案&#xff0c;正逐渐成为企业级硬件管理的首选。对于树莓派爱好者而言&#xff0c;直接使用预编译镜像可以跳过漫长的编译过程&#xff0c…...

加固后应用闪退、卡顿、体积暴增?手把手教你问题排查与解决

“加固完一打包&#xff0c;应用闪退了。”“启动速度慢了2秒&#xff0c;用户要骂娘了。”“加固后APK体积翻了一倍&#xff0c;这可怎么发&#xff1f;”这些都是开发者接入APK加固平台后最常遇到的“并发症”。当这些问题发生时&#xff0c;第一反应往往是怀疑加固方案本身有…...

Z-Image-Turbo-rinaiqiao-huiyewunv GPU利用率提升:bf16加载+CPU offload组合优化实测

Z-Image-Turbo-rinaiqiao-huiyewunv GPU利用率提升&#xff1a;bf16加载CPU offload组合优化实测 1. 项目背景与技术特点 Z-Image Turbo (辉夜大小姐-日奈娇)是基于Tongyi-MAI Z-Image底座模型开发的专属二次元人物绘图工具。该工具通过注入辉夜大小姐(日奈娇)微调safetensor…...