首页 > 数据库 >Oracle PL/SQL之对象权限与系统权限的撤销差异

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

时间:2022-12-02 16:02:07浏览次数:39  
标签:00 user2 user3 user1 CREATE SQL Oracle 权限


  1. 对象权限测试:  
  2. 初始状态下,user2和user3都没有user1.t1的对象权限  
  3. user1下存在t1表:  
  4. duzz$user1@orcl>select * from t1;  
  5.   
  6.         C1  
  7. ----------  
  8.       1111  
  9.   
  10. Elapsed: 00:00:00.00  
  11.   
  12. user2不能查询user1.t1:  
  13. duzz$user2@orcl>select * from user1.t1;  
  14. select * from user1.t1  
  15.                     *  
  16. ERROR at line 1:  
  17. ORA-00942: table or view does not exist  
  18.   
  19.   
  20. Elapsed: 00:00:00.00  
  21.   
  22. user3不能查询user1.t1:  
  23. duzz$user3@orcl>select * from user1.t1;  
  24. select * from user1.t1  
  25.                     *  
  26. ERROR at line 1:  
  27. ORA-00942: table or view does not exist  
  28.   
  29.   
  30. Elapsed: 00:00:00.01  
  31.   
  32. user1赋予user2在t1上的对象权限,同时允许user2将该权限赋予别的用户:  
  33. duzz$user1@orcl>grant all on t1 to user2 with grant option;  
  34.   
  35. Grant succeeded.  
  36.   
  37. Elapsed: 00:00:00.00  
  38.   
  39. user2已经可以查询user1.t1,同时user2将user1.t1的对象权限赋予user3:  
  40. duzz$user2@orcl>select * from user1.t1;  
  41.   
  42.         C1  
  43. ----------  
  44.       1111  
  45.   
  46. Elapsed: 00:00:00.00  
  47. duzz$user2@orcl>grant all on user1.t1 to user3;  
  48.   
  49. Grant succeeded.  
  50.   
  51. Elapsed: 00:00:00.00  
  52. duzz$user2@orcl>  
  53.   
  54. user3也可以查询user1.t1了:  
  55. duzz$user3@orcl>select * from user1.t1;  
  56.   
  57.         C1  
  58. ----------  
  59.       1111  
  60.   
  61. Elapsed: 00:00:00.00  
  62.   
  63. user1尝试直接从user3那里回收权限,执行语句虽然没有报错,但是并没有实际作用:  
  64. duzz$user1@orcl>revoke all on t1 from user3;  
  65.   
  66. Revoke succeeded.  
  67.   
  68. Elapsed: 00:00:00.00  
  69.   
  70. user3仍然能够查询user1.t1:  
  71. duzz$user3@orcl>select * from user1.t1;  
  72.   
  73.         C1  
  74. ----------  
  75.       1111  
  76.   
  77. Elapsed: 00:00:00.00  
  78.   
  79. user1这次开始从user2那里回收权限,  
  80. duzz$user1@orcl>revoke all on t1 from user2;  
  81.   
  82. Revoke succeeded.  
  83.   
  84. Elapsed: 00:00:00.01  
  85.   
  86. user2权限被收回:  
  87. duzz$user2@orcl>select * from user1.t1;  
  88. select * from user1.t1  
  89.                     *  
  90. ERROR at line 1:  
  91. ORA-00942: table or view does not exist  
  92.   
  93.   
  94. Elapsed: 00:00:00.01  
  95.   
  96. 与此同时,user3的权限也被收回:  
  97. duzz$user3@orcl>select * from user1.t1;  
  98. select * from user1.t1  
  99.                     *  
  100. ERROR at line 1:  
  101. ORA-00942: table or view does not exist  
  102.   
  103.   
  104. Elapsed: 00:00:00.01  
  105.   
  106. 对于对象权限,虽然不能从非直接授予的用户回收,但是回收具有级联性。  
  107.   
  108.   
  109. 系统权限测试:  
  110. user1具有CREATE VIEW的系统权限,同时该权限可以grant给别的用户,user2和user3则没有该权限:  
  111. duzz$user1@orcl>select * from session_privs;  
  112.   
  113. PRIVILEGE  
  114. ---------------------------------------------------  
  115. CREATE SESSION  
  116. UNLIMITED TABLESPACE  
  117. CREATE TABLE  
  118. CREATE VIEW  
  119.   
  120. Elapsed: 00:00:00.00  
  121.   
  122. user2没有CREATE VIEW的系统权限:  
  123. duzz$user2@orcl>select * from session_privs;  
  124.   
  125. PRIVILEGE  
  126. ------------------------------------------------  
  127. CREATE SESSION  
  128. UNLIMITED TABLESPACE  
  129. CREATE TABLE  
  130.   
  131. Elapsed: 00:00:00.01  
  132.   
  133. user3也没有CREATE VIEW的系统权限:  
  134. duzz$user3@orcl>select * from session_privs;  
  135.   
  136. PRIVILEGE  
  137. ------------------------------------------------  
  138. CREATE SESSION  
  139. UNLIMITED TABLESPACE  
  140. CREATE TABLE  
  141.   
  142. Elapsed: 00:00:00.01  
  143.   
  144. user1将CREATE VIEW的权限赋予user2,同时赋予user2可以将该权限赋予其它用户的权限:  
  145. duzz$user1@orcl>grant create view to user2 with admin option;  
  146.   
  147. Grant succeeded.  
  148.   
  149. Elapsed: 00:00:00.01  
  150.   
  151. user2获得CREATE VIEW的权限:  
  152. duzz$user2@orcl>select * from session_privs;  
  153.   
  154. PRIVILEGE  
  155. -------------------------------------------------  
  156. CREATE SESSION  
  157. UNLIMITED TABLESPACE  
  158. CREATE TABLE  
  159. CREATE VIEW  
  160.   
  161. Elapsed: 00:00:00.00  
  162.   
  163.   
  164. user2将CREATE VIEW的权限赋予user3:  
  165. duzz$user2@orcl>grant create view to user3;  
  166.   
  167. Grant succeeded.  
  168.   
  169. Elapsed: 00:00:00.00  
  170.   
  171. user3获得CREATE VIEW的权限:  
  172. duzz$user3@orcl>select * from session_privs;  
  173.   
  174. PRIVILEGE  
  175. --------------------------------------------------  
  176. CREATE SESSION  
  177. UNLIMITED TABLESPACE  
  178. CREATE TABLE  
  179. CREATE VIEW  
  180.   
  181. Elapsed: 00:00:00.01  
  182.   
  183. 不同于对象权限,系统权限可以直接从非直接授予的用户上收回。  
  184. user1尝试直接从user3上回收CREATE VIEW的权限:  
  185. duzz$user1@orcl>revoke create view from user3;  
  186.   
  187. Revoke succeeded.  
  188.   
  189. Elapsed: 00:00:00.01  
  190.   
  191. user3的CREATE VIEW的权限被收回:  
  192. duzz$user3@orcl>select * from session_privs;  
  193.   
  194. PRIVILEGE  
  195. ---------------------------------------------  
  196. CREATE SESSION  
  197. UNLIMITED TABLESPACE  
  198. CREATE TABLE  
  199.   
  200. Elapsed: 00:00:00.01  
  201.   
  202. 测试系统权限是不是也像对象权限一样具有撤销级联性。  
  203. user2再次将CREATE VIEW的权限赋予user3:  
  204. duzz$user2@orcl>grant create view to user3;  
  205.   
  206. Grant succeeded.  
  207.   
  208. Elapsed: 00:00:00.01  
  209.   
  210. user1收回user2的CREATE VIEW的权限:  
  211. duzz$user1@orcl>revoke create view from user2;  
  212.   
  213. Revoke succeeded.  
  214.   
  215. Elapsed: 00:00:00.00  
  216.   
  217. user2的CREATE VIEW的权限被收回:  
  218. duzz$user2@orcl>select * from session_privs;  
  219.   
  220. PRIVILEGE  
  221. ------------------------------------------------  
  222. CREATE SESSION  
  223. UNLIMITED TABLESPACE  
  224. CREATE TABLE  
  225.   
  226. Elapsed: 00:00:00.00  
  227.   
  228. 不过,user3仍然拥有CREATE VIEW的权限:  
  229. duzz$user3@orcl>select * from session_privs;  
  230.   
  231. PRIVILEGE  
  232. -------------------------------------------------  
  233. CREATE SESSION  
  234. UNLIMITED TABLESPACE  
  235. CREATE TABLE  
  236. CREATE VIEW  
  237.   
  238. Elapsed: 00:00:00.00  
  239.   
  240. 对于系统权限,可以从非直接授予的用户收回权限,但是不具备回收级联性。  
  241.   
  242.   
  243. 总结:  
  244. 对于对象权限,虽然不能从非直接授予的用户回收,但是回收具有级联性。  
  245. 对于系统权限,可以从非直接授予的用户收回权限,但是不具备回收级联性。  

标签:00,user2,user3,user1,CREATE,SQL,Oracle,权限
From: https://blog.51cto.com/u_11295556/5907114

相关文章

  • BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息
    SQLServiceBroker是在SQLServer2005中新增的功能。ServiceBroker为SQLServer提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的应用。当然从题目大家可......
  • Zabbix与乐维监控对比分析(二)——Agent管理、自动发现、权限管理
    上期我们详细介绍了Zabbix与乐维监控的架构与性能对比分析,透过架构与性能对比分析,用户可以对乐维监控之所以能成为”Zabbix企业版”有一个初步的认知。本篇是Zabbix对比乐......
  • Shiro权限 表设计
    表设计权限管理需要的基本表有5个如下:sys_users用户表sys_roles角色表sys_permissions权限表(或资源表)sys_users_roles用户-角色关联表sys_roles_permissions角色-......
  • sql server 2005新功能之TOP
    TOP的语法在SQL SERVER2005中有新增加的东西了,可以支持update,delete,数学表达式等,举例如下:建立一个表如下CreatetableMytable2(au_idint,......
  • (转载)SQL Server 2005 数据库快照(database Snapshot)
    数据库快照(atabasesnapshot)是一个只读的,静态的数据库视图。一个数据库可以有多个数据库快照,每个数据库快照在被显性的删除之前将一直存在。数据库快照将保持和源数据库快......
  • SQL SERVER 2005 中的CTE
    这种语法的好处就是可以创建出一张临时的表,这张表可以在定义中使用自引用,使得我们处理父-子关系变得前所未有的方便.下面举例子说明之.USEAdventureWorksGOWITHMyCTE(Lis......
  • 数据库面试题--Mysql
    MySQL1.什么是索引?2.索引是个什么样的数据结构呢?3.Hash索引和B+树索引有什么区别或者说优劣呢?4.在建立索引的时候,都有哪些需要考虑的因素呢?5.了解过哪些存储引......
  • 二进制部署MySQL8
    下载安装包:wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz下载依赖:yum-yinstalllibaio解压安装:tar-x......
  • Python高级-mini-web框架、添加路由、MySQL功能-笔记
    此篇文章是接着上一篇文章写的​​《Python高级-WSGI、mini-web框架-笔记》​​下一篇​​《Python高级-mini-web框架、添加log日志、路由支持正则-笔记》​​1.miniweb框......
  • linux++mysql命令行操作
    linux操作:切换root>sudosu  linux mysql命令行操作root@fossx:/opt/fossx/conf#sudomysql-uroot-pmysql>showdatabase;mysql>usefossx;mysql>showtab......