• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Oracle查询用户拥有所有系统权限的方法

    发布者: 土豆服务器 | 发布时间: 2025-6-18 09:29| 查看数: 96| 评论数: 0|帖子模式

    Oracle查询用户拥有所有系统权限
    1. SQL> desc dba_sys_privs;   查询对象拥有的系统权限
    2. Name                                     Null?    Type
    3. ---------------------------------------- -------- ---------------------------
    4. GRANTEE                                  NOT NULL VARCHAR2(30)
    5. PRIVILEGE                                NOT NULL VARCHAR2(40)
    6. ADMIN_OPTION                                      VARCHAR2(3)
    7. SQL> select * from dba_sys_privs where grantee='HR';
    8. GRANTEE                        PRIVILEGE                                ADM
    9. ------------------------------ ---------------------------------------- ---
    10. HR                             UNLIMITED TABLESPACE                     NO
    11. HR                             CREATE SESSION                           NO
    12. HR                             CREATE TABLE                             NO
    13. SQL> desc dba_role_privs;
    14. Name                                     Null?    Type
    15. ---------------------------------------- -------- ---------------------------
    16. USERNAME                                          VARCHAR2(30)
    17. GRANTED_ROLE                                      VARCHAR2(30)
    18. ADMIN_OPTION                                      VARCHAR2(3)
    19. DEFAULT_ROLE                                      VARCHAR2(3)
    20. OS_GRANTED                                        VARCHAR2(3)
    21. SQL> select * from dba_role_privs where grantee='HR';对象拥有的角色
    22. GRANTEE                        GRANTED_ROLE                   ADM DEF
    23. ------------------------------ ------------------------------ --- ---
    24. HR                             RESOURCE                       NO  YES
    25. SQL> select * from role_sys_privs where ROLE='RESOURCE';  通过角色查找权限
    26. ROLE                           PRIVILEGE                                ADM
    27. ------------------------------ ---------------------------------------- ---
    28. RESOURCE                       CREATE TRIGGER                           NO
    29. RESOURCE                       CREATE SEQUENCE                          NO
    30. RESOURCE                       CREATE TYPE                              NO
    31. RESOURCE                       CREATE PROCEDURE                         NO
    32. RESOURCE                       CREATE CLUSTER                           NO
    33. RESOURCE                       CREATE OPERATOR                          NO
    34. RESOURCE                       CREATE INDEXTYPE                         NO
    35. RESOURCE                       CREATE TABLE                             NO
    36. SQL>  select a.granted_role,b.privilege,c.privilege
    37.      From dba_role_privs a,role_sys_privs b ,dba_sys_privs c
    38.    Where a.granted_role=b.role and a.grantee=c.grantee and a.grantee='HR
    39. RESOURCE        CREATE SEQUENCE      UNLIMITED TABLESPACE
    40. RESOURCE        CREATE INDEXTYPE     CREATE SESSION
    41. --看起来很美好,但是这是等值才返回结果,1=1=1   3*8=24t条记录
    42. select a.granted_role,b.privilege,c.privilege from dba_role_privs
    43. a join role_sys_privs b on a.granted_role=b.role join dba_sys_privs
    44. c on a.grantee=c.grantee and a.grantee='HR';  --一样无法达到效果;
    45. --a  通过用户查找拥有的角色
    46. select * from dba_role_privs  grantee granted_role
    47. -b  通过角色查找拥有的权限
    48. select * from role_sys_privs    1-2 role  granted_role
    49. -c 通过用户查找拥有的系统权限
    50. select * from dba_sys_privs  1-3 grantee
    51. --思路1+2=2 => 2+3=总
    52. select * from (select a.grantee,b.privilege from
    53. dba_role_privs a join role_sys_privs b on a.granted_role=b.role
    54.   union
    55.    select c.grantee,c.privilege from dba_sys_privs c)
    56.     where grantee='HR';
    57. --于上一样--where条件执行速度更快
    58. select a.grantee,b.privilege from
    59. dba_role_privs a join role_sys_privs b
    60.     on a.granted_role=b.role where grantee='HR'
    61.   union
    62.    select c.grantee,c.privilege from dba_sys_privs c where grantee='HR';
    63. 意义:有些权限不是通过角色单独授予、或者单独授予权限:通过集合更好查找用户有啥权限
    64. ****补充:
    65. --什么是对象权限,设计到具体的针对某一个对象的权限;
    66. grant select on scott.dept to hr;
    67. 查询会有具体对象的权限;
    68. select * from dba_tab_privs where grantee='HR';
    69. HR         SYS        YANG       SYS        WRITE      NO  NO
    70. HR         SYS        YANG       SYS        READ       NO  NO
    71. HR         SYS        DBMS_STATS SYS        EXECUTE    NO  NO
    72. HR         SCOTT      DEPT       SCOTT      SELECT     NO  NO
    73. 回收: revoke execute on sys.DBMS_STATS from hr;
    复制代码
    到此这篇关于Oracle查询用户拥有所有系统权限的文章就介绍到这了,更多相关Oracle查询用户拥有权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/333139tos.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表