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

PostgreSQL 中的权限视图

PostgreSQL 中的权限视图

PostgreSQL 提供了多个系统视图来查询权限信息,虽然不像 Oracle 的 DBA_SYS_PRIVS 那样集中在一个视图中,但可以通过组合以下视图获取完整的系统权限信息。

一 主要权限相关视图

Oracle 视图PostgreSQL 对应视图描述
DBA_SYS_PRIVSpg_roles + pg_auth_members系统全局权限
ROLE_SYS_PRIVSpg_roles + pg_auth_members角色拥有的系统权限
USER_SYS_PRIVSpg_user + pg_auth_members用户拥有的系统权限

二 PostgreSQL 核心权限视图

2.1 pg_roles / pg_user - 角色/用户基本信息

SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, rolcanlogin 
FROM pg_roles;-- 或简化的用户视图
SELECT * FROM pg_user;

2.2 pg_auth_members - 角色成员关系

SELECT roleid::regrole AS role, member::regrole AS member, grantor::regrole AS grantor
FROM pg_auth_members;

2.3 自定义查询 (类似 DBA_SYS_PRIVS)

SELECT r.rolname AS grantee,CASE WHEN r.rolsuper THEN 'SUPERUSER'WHEN r.rolcreaterole THEN 'CREATE ROLE'WHEN r.rolcreatedb THEN 'CREATE DB'WHEN r.rolcanlogin THEN 'LOGIN'ELSE 'OTHER'END AS privilege,'SYSTEM' AS admin_option
FROM pg_roles r
WHERE r.rolsuper OR r.rolcreaterole OR r.rolcreatedb OR r.rolcanlogin;

三 特定权限检查查询

3.1 检查超级用户权限

SELECT usename FROM pg_user WHERE usesuper;

3.2 检查创建数据库权限

SELECT rolname FROM pg_roles WHERE rolcreatedb;

3.3 检查创建角色权限

SELECT rolname FROM pg_roles WHERE rolcreaterole;

3.4 检查登录权限

SELECT rolname FROM pg_roles WHERE rolcanlogin;

四 对象级权限视图

PostgreSQL 还提供对象级别的权限视图,类似于 Oracle 的 DBA_TAB_PRIVS

4.1 information_schema.role_table_grants

SELECT * FROM information_schema.role_table_grants;

4.2 information_schema.role_column_grants

SELECT * FROM information_schema.role_column_grants;

4.3 pg_namespace - schema 权限

SELECT nspname, nspowner::regrole FROM pg_namespace;

五 权限管理对比表

功能OraclePostgreSQL
超级用户DBA_SYS_PRIVS 中的 SYSDBApg_roles.rolsuper
创建角色CREATE ROLE 权限pg_roles.rolcreaterole
创建数据库CREATE DATABASE 权限pg_roles.rolcreatedb
登录权限CREATE SESSION 权限pg_roles.rolcanlogin
角色授权GRANT 语句pg_auth_members 视图

六 实用权限查询示例

6.1 综合权限报告

SELECT r.rolname AS role,CASE WHEN r.rolsuper THEN 'YES' ELSE 'NO' END AS superuser,CASE WHEN r.rolcreaterole THEN 'YES' ELSE 'NO' END AS create_role,CASE WHEN r.rolcreatedb THEN 'YES' ELSE 'NO' END AS create_db,CASE WHEN r.rolcanlogin THEN 'YES' ELSE 'NO' END AS can_login,array(SELECT b.rolname FROM pg_auth_members m JOIN pg_roles b ON m.roleid = b.oid WHERE m.member = r.oid) AS member_of
FROM pg_roles r
ORDER BY 1;

6.2 查找具有特定权限的角色

-- 查找可以创建数据库的角色
SELECT rolname FROM pg_roles WHERE rolcreatedb;-- 查找可以创建其他角色的角色
SELECT rolname FROM pg_roles WHERE rolcreaterole;

PostgreSQL 的权限系统虽然与 Oracle 有所不同,但通过这些系统视图可以获取到同等详细的信息。

http://www.xdnf.cn/news/1756.html

相关文章:

  • Qt 中线程使用
  • 国产操作系统-招标公司专家随机抽选系统————仙盟创梦IDE开发
  • 以运营为核心的智能劳动力管理系统,破解连锁零售、制造业排班难题
  • 2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)
  • Android插拔U盘导致黑屏问题排查
  • 陪诊陪检系统源码,陪诊小程序,陪诊APP,陪诊服务,家政上门系统,居家护理陪护源码,医护小程序
  • 使用正确的 JVM 功能加速现有部署
  • 文本溢出隐藏显示省略号
  • 【办公类-89-02】20250424会议记录模版WORD自动添加空格补全下划线
  • Windows 强制删除文件夹/文件(删除提示“你需要来自 Administrators 的权限才能对此文件夹进行更改”)
  • Linux电源管理(四),设备的Runtime Power Management(RPM)
  • Oracle锁的概念和类型
  • SiamMask原理详解:从SiamFC到SiamRPN++,再到多任务分支设计
  • 数值数据标准化:机器学习中的关键预处理技术
  • 数据分析之 商品价格分层之添加价格带
  • 项目管理、项目集管理与项目组合管理的区别与管理策略解析
  • AI驱动的售后服务软件:三大核心功能破解企业服务难题
  • SQL实战:01之行转列实现
  • 【学习笔记】文件包含漏洞--相关习题
  • mybatis log convert使用
  • 手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏
  • Yocto meta-toradex-security layer 创建独立数据分区
  • HTML邮件背景图兼容 Outlook
  • 避免事件“穿透”——Vue 中事件冒泡的理解与解决方案
  • AD16如何设置布线规则
  • JAVA聚焦OutOfMemoryError 异常
  • Spring Cloud Gateway配置双向SSL认证(完整指南)
  • 商显行业革新者:RK3588的8K显示技术如何打造沉浸式商业体验
  • JW01三合一传感器详解(STM32)
  • nextjs国际化