三个用户:SYS、lisi、wangwu

① 系统权限的传递

lisi的初始化系统权限
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
PUBLIC CREATE ANY TABLE NO
LISI CREATE SESSION NO
LISI CREATE TABLE NO
LISI UNLIMITED TABLESPACE NO wangwu的初始化系统权限
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
PUBLIC CREATE ANY TABLE NO
WANGWU CREATE TABLE NO
WANGWU CREATE SESSION NO
WANGWU UNLIMITED TABLESPACE NO

现在SYS将修改任意表的系统权限赋予lisi

SQL> grant alter any table to lisi;
授权成功。

现在lisi的系统权限变为

SQL> select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
PUBLIC CREATE ANY TABLE NO
LISI CREATE SESSION NO
LISI ALTER ANY TABLE NO
LISI CREATE TABLE NO
LISI UNLIMITED TABLESPACE NO

注意此时新增项的ADM为NO
现在我们将修改任意表的权限由lisi赋予给wangwu

SQL> grant alter any table to wangwu;
grant alter any table to wangwu
*
第 1 行出现错误:
ORA-01031: 权限不足

表明这样是无法级联授权的,SYS用户在授予lisi权限的时候需要给予管理选项
SYS:

SQL> grant alter any table to lisi with admin option;
授权成功。

lisi:

SQL> select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
PUBLIC CREATE ANY TABLE NO
LISI CREATE SESSION NO
LISI ALTER ANY TABLE YES
LISI CREATE TABLE NO
LISI UNLIMITED TABLESPACE NO

这时ALTER ANY TABLE一行的ADM是yes,再将权限由lisi赋予给wangwu

SQL> grant alter any table to wangwu;
授权成功。

这时wangwu还能将该权限赋予其他的用户吗?答案是NO

wangwu:

SQL>  select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
PUBLIC CREATE ANY TABLE NO
WANGWU CREATE TABLE NO
WANGWU CREATE SESSION NO
WANGWU ALTER ANY TABLE NO
WANGWU UNLIMITED TABLESPACE NO

如果需要wangwu也有授予的功能,则lisi授权时需要再加上with admin option

② 对象权限的传递

SYS用户新建一个表obj并将查询的权限赋予lisi

SQL> create table obj(id int);
表已创建。 SQL> grant select on obj to lisi;
授权成功。

lisi查看自己的对象权限

SQL> set linesize 400
SQL> select * from user_tab_privs; GRANTEE LISI
OWNER SYS
TABLE_NAME OBJ
GRANTOR SYS
PRIVILEGE SELECT
GRA NO
HIE NO

将对象权限赋予wangwu需要SYS赋予lisi级联权限

SQL> grant select on obj to lisi with grant option;
授权成功。

wangwu:

SQL> select * from user_tab_privs;

GRANTEE            WANGWU
OWNER SYS
TABLE_NAME USER_OBJECTS
GRANTOR LISI
PRIVILEGE SELECT
GRA NO
HIE NO

同样的,如果需要wangwu也有授予的功能,则lisi授权时需要再加上with grant option。

最新文章

  1. 一个软件开发者的BPM之路
  2. php实现设计模式之 组合模式
  3. Linux学习心得之 Linux下命令行Android开发环境的搭建
  4. C# 事件编程在游戏开发的应用
  5. ubuntu apt常用命令
  6. Git_Commands
  7. Writing an Hadoop MapReduce Program in Python
  8. 通过修改注册表来破解sqlyog
  9. [原创]Android中LocationManager的简单使用,获取当前位置
  10. sublime中使用markdown
  11. Intrumentation类:ActivityInstrumentationTestCase2学习(1)
  12. MySql基本使用方法
  13. Spring Security(二十):6.2.3 Form and Basic Login Options
  14. 657. Robot Return to Origin
  15. 说一说javascript的异步编程
  16. JavaScript_几种创建对象(2017-07-04)
  17. [Python] 动态函数调用(通过函数名)
  18. Rolling in the Deep (Learning)
  19. Python基础(10) - 异常
  20. iOS 真机调试多台mac电脑共用一个证书

热门文章

  1. 存储映射I/O
  2. SonarQube4.4+Jenkins进行代码检查实例之三-单元測试分析
  3. kubernetes 二
  4. jpa 批量插入
  5. python中杂乱问题
  6. html input select等控件宽度对不齐?请使用box-sizing。
  7. nginx location URI匹配规则
  8. Spring Cloud Summary
  9. angular学习笔记(二十四)-$http(2)-设置http请求头
  10. Cocos2d-x Scene生命周期 pushScene和replaceScene