Oracle PL/SQL之对象权限与系统权限的撤销差异

本文通过实例演示了在数据库管理中对象权限与系统权限的分配、回收及级联性,重点探讨了权限传递与收回的机制,特别是针对非直接授予用户的权限管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 对象权限测试:
  2. 初始状态下,user2和user3都没有user1.t1的对象权限
  3. user1下存在t1表:
  4. duzz$user1@orcl>select*fromt1;
  5. C1
  6. ----------
  7. 1111
  8. Elapsed:00:00:00.00
  9. user2不能查询user1.t1:
  10. duzz$user2@orcl>select*fromuser1.t1;
  11. select*fromuser1.t1
  12. *
  13. ERRORatline1:
  14. ORA-00942:tableorviewdoesnotexist
  15. Elapsed:00:00:00.00
  16. user3不能查询user1.t1:
  17. duzz$user3@orcl>select*fromuser1.t1;
  18. select*fromuser1.t1
  19. *
  20. ERRORatline1:
  21. ORA-00942:tableorviewdoesnotexist
  22. Elapsed:00:00:00.01
  23. user1赋予user2在t1上的对象权限,同时允许user2将该权限赋予别的用户:
  24. duzz$user1@orcl>grantallont1touser2withgrantoption;
  25. Grantsucceeded.
  26. Elapsed:00:00:00.00
  27. user2已经可以查询user1.t1,同时user2将user1.t1的对象权限赋予user3:
  28. duzz$user2@orcl>select*fromuser1.t1;
  29. C1
  30. ----------
  31. 1111
  32. Elapsed:00:00:00.00
  33. duzz$user2@orcl>grantallonuser1.t1touser3;
  34. Grantsucceeded.
  35. Elapsed:00:00:00.00
  36. duzz$user2@orcl>
  37. user3也可以查询user1.t1了:
  38. duzz$user3@orcl>select*fromuser1.t1;
  39. C1
  40. ----------
  41. 1111
  42. Elapsed:00:00:00.00
  43. user1尝试直接从user3那里回收权限,执行语句虽然没有报错,但是并没有实际作用:
  44. duzz$user1@orcl>revokeallont1fromuser3;
  45. Revokesucceeded.
  46. Elapsed:00:00:00.00
  47. user3仍然能够查询user1.t1:
  48. duzz$user3@orcl>select*fromuser1.t1;
  49. C1
  50. ----------
  51. 1111
  52. Elapsed:00:00:00.00
  53. user1这次开始从user2那里回收权限,
  54. duzz$user1@orcl>revokeallont1fromuser2;
  55. Revokesucceeded.
  56. Elapsed:00:00:00.01
  57. user2权限被收回:
  58. duzz$user2@orcl>select*fromuser1.t1;
  59. select*fromuser1.t1
  60. *
  61. ERRORatline1:
  62. ORA-00942:tableorviewdoesnotexist
  63. Elapsed:00:00:00.01
  64. 与此同时,user3的权限也被收回:
  65. duzz$user3@orcl>select*fromuser1.t1;
  66. select*fromuser1.t1
  67. *
  68. ERRORatline1:
  69. ORA-00942:tableorviewdoesnotexist
  70. Elapsed:00:00:00.01
  71. 对于对象权限,虽然不能从非直接授予的用户回收,但是回收具有级联性。
  72. 系统权限测试:
  73. user1具有CREATEVIEW的系统权限,同时该权限可以grant给别的用户,user2和user3则没有该权限:
  74. duzz$user1@orcl>select*fromsession_privs;
  75. PRIVILEGE
  76. ---------------------------------------------------
  77. CREATESESSION
  78. UNLIMITEDTABLESPACE
  79. CREATETABLE
  80. CREATEVIEW
  81. Elapsed:00:00:00.00
  82. user2没有CREATEVIEW的系统权限:
  83. duzz$user2@orcl>select*fromsession_privs;
  84. PRIVILEGE
  85. ------------------------------------------------
  86. CREATESESSION
  87. UNLIMITEDTABLESPACE
  88. CREATETABLE
  89. Elapsed:00:00:00.01
  90. user3也没有CREATEVIEW的系统权限:
  91. duzz$user3@orcl>select*fromsession_privs;
  92. PRIVILEGE
  93. ------------------------------------------------
  94. CREATESESSION
  95. UNLIMITEDTABLESPACE
  96. CREATETABLE
  97. Elapsed:00:00:00.01
  98. user1将CREATEVIEW的权限赋予user2,同时赋予user2可以将该权限赋予其它用户的权限:
  99. duzz$user1@orcl>grantcreateviewtouser2withadminoption;
  100. Grantsucceeded.
  101. Elapsed:00:00:00.01
  102. user2获得CREATEVIEW的权限:
  103. duzz$user2@orcl>select*fromsession_privs;
  104. PRIVILEGE
  105. -------------------------------------------------
  106. CREATESESSION
  107. UNLIMITEDTABLESPACE
  108. CREATETABLE
  109. CREATEVIEW
  110. Elapsed:00:00:00.00
  111. user2将CREATEVIEW的权限赋予user3:
  112. duzz$user2@orcl>grantcreateviewtouser3;
  113. Grantsucceeded.
  114. Elapsed:00:00:00.00
  115. user3获得CREATEVIEW的权限:
  116. duzz$user3@orcl>select*fromsession_privs;
  117. PRIVILEGE
  118. --------------------------------------------------
  119. CREATESESSION
  120. UNLIMITEDTABLESPACE
  121. CREATETABLE
  122. CREATEVIEW
  123. Elapsed:00:00:00.01
  124. 不同于对象权限,系统权限可以直接从非直接授予的用户上收回。
  125. user1尝试直接从user3上回收CREATEVIEW的权限:
  126. duzz$user1@orcl>revokecreateviewfromuser3;
  127. Revokesucceeded.
  128. Elapsed:00:00:00.01
  129. user3的CREATEVIEW的权限被收回:
  130. duzz$user3@orcl>select*fromsession_privs;
  131. PRIVILEGE
  132. ---------------------------------------------
  133. CREATESESSION
  134. UNLIMITEDTABLESPACE
  135. CREATETABLE
  136. Elapsed:00:00:00.01
  137. 测试系统权限是不是也像对象权限一样具有撤销级联性。
  138. user2再次将CREATEVIEW的权限赋予user3:
  139. duzz$user2@orcl>grantcreateviewtouser3;
  140. Grantsucceeded.
  141. Elapsed:00:00:00.01
  142. user1收回user2的CREATEVIEW的权限:
  143. duzz$user1@orcl>revokecreateviewfromuser2;
  144. Revokesucceeded.
  145. Elapsed:00:00:00.00
  146. user2的CREATEVIEW的权限被收回:
  147. duzz$user2@orcl>select*fromsession_privs;
  148. PRIVILEGE
  149. ------------------------------------------------
  150. CREATESESSION
  151. UNLIMITEDTABLESPACE
  152. CREATETABLE
  153. Elapsed:00:00:00.00
  154. 不过,user3仍然拥有CREATEVIEW的权限:
  155. duzz$user3@orcl>select*fromsession_privs;
  156. PRIVILEGE
  157. -------------------------------------------------
  158. CREATESESSION
  159. UNLIMITEDTABLESPACE
  160. CREATETABLE
  161. CREATEVIEW
  162. Elapsed:00:00:00.00
  163. 对于系统权限,可以从非直接授予的用户收回权限,但是不具备回收级联性。
  164. 总结:
  165. 对于对象权限,虽然不能从非直接授予的用户回收,但是回收具有级联性。
  166. 对于系统权限,可以从非直接授予的用户收回权限,但是不具备回收级联性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值