grant with admin option and grant with grant option

本文详细介绍了Oracle数据库中如何使用GRANT语句进行权限管理,包括系统权限和对象权限的授予方式,以及WITH ADMIN OPTION和WITH GRANT OPTION的区别与用法。此外还探讨了列级权限管理和行级权限控制。

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

通过grant语句可以将系统权限和角色授予用户或者角色。但是必须满足如下的条件:

  • 对于系统权限,执行用户需要具有 GRANT ANY PRIVILEGE权限或者具有被授予的权限(WITH ADMIN OPTIONS)
  • 对于角色,执行用户需要具有GRANT ANY ROLE系统权限或者具有被授予角色(with admin options)

with admin option:

  • 只是针对系统权限和角色,对于对象权限不可以使用
  • 被授予用户可以授予或者回收其该系统权限或者角色,用户不可以回收自己的权限和角色
  • 被授予用户可以使用该权限和角色的with admin option选项
  • 被授予用户可以删除或者更改被授予的角色(drop or alter)

with grant option:

  • 只限于对象权限,
  • 必须是对象的拥有者,或者具有grant any object privilege系统权限,或者具有相应权限(with grant option)
  • 如果用户具有某表的对象权限(with grant option),并依附该表创建视图,那么该用户可以授权视图的权限给其他用户
  • 当我们将对象权限(with grant option)赋予某角色,拥有该角色的用户不会继承或者传播WITH GRANT OPTION

如果某个用户具有GRANT ANY OBJECT PRIVILEGE系统权限,那么他可以管理其他用户的对象权限。此时在dba_tab_privs中相应记录的grantor字段值为对象的拥有者,即GRANT ANY OBJECT PRIVILEGE具有替代对象拥有者执行权限管理的特点。

如果某个用户A,具有其他用户B的对象权限(with grant option),那么当用户A授权该对象权限给其他用户时,DBA_TAB_PRIVS 中的对应GRANTOR字段为用户A。

SQL> grant grant any object privilege to scott;
SQL> conn scott/tiger
已连接。
SQL> grant select  on easy.tab1 to tts with grant option;

授权成功。

SQL> grant select  on easy.tab1 to abcd ;

授权成功。
SQL> CONN tts/tts
已连接。
SQL> show user
USER 为 "TTS"
SQL> grant select on easy.tab1 to sh;
SQL> /

GRANTEE 		       GRANTOR			      PRIVILEGE 			       GRA
------------------------------ ------------------------------ ---------------------------------------- ---
SH			       TTS			      SELECT				       NO
ABCD			       EASY			      SELECT				       NO
TTS			       EASY			      SELECT				       YES
我们还可以在列级别管理用户的对象权限,例如

GRANT INSERT (acct_no) ON accounts TO psmith;

另外,通过VPD和ORACLE Label Security(OLS),ORACLE 为我们提供了行级别的控制能力,有兴趣的同学可以查看官方文档。


贴士:我们可以使用grant语句来创建用户,例如GRANT CREATE SESSION TO NEW_USER IDENTIFIED BY PASSWORD,如果new_user不存在,则以password为密码创建用户new_user。

贴士:系统权限和对象权限不可以在同一个grant语句中赋予。


CREATE USER cedar IDENTIFIED BY cedar DEFAULT TABLESPACE CEDAR_DATA TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; -- 5 Roles for cedar GRANT DBA TO cedar; GRANT RESOURCE TO cedar WITH ADMIN OPTION; GRANT AQ_ADMINISTRATOR_ROLE TO cedar; GRANT CONNECT TO cedar WITH ADMIN OPTION; GRANT AQ_USER_ROLE TO cedar; ALTER USER cedar DEFAULT ROLE ALL; -- 44 System Privileges for cedar GRANT CREATE ANY DIRECTORY TO cedar WITH ADMIN OPTION; GRANT CREATE PUBLIC SYNONYM TO cedar WITH ADMIN OPTION; GRANT EXECUTE ANY CLASS TO cedar WITH ADMIN OPTION; GRANT DROP ANY VIEW TO cedar WITH ADMIN OPTION; GRANT CREATE CLUSTER TO cedar; GRANT ALTER SYSTEM TO cedar; GRANT UPDATE ANY TABLE TO cedar; GRANT INSERT ANY TABLE TO cedar; GRANT LOCK ANY TABLE TO cedar; GRANT CREATE EXTERNAL JOB TO cedar WITH ADMIN OPTION; GRANT EXECUTE ANY PROGRAM TO cedar WITH ADMIN OPTION; GRANT CREATE JOB TO cedar WITH ADMIN OPTION; GRANT DROP ANY DIRECTORY TO cedar WITH ADMIN OPTION; GRANT ALTER ANY TRIGGER TO cedar; GRANT CREATE DATABASE LINK TO cedar; GRANT DROP ANY TABLE TO cedar WITH ADMIN OPTION; GRANT CREATE TABLE TO cedar WITH ADMIN OPTION; GRANT QUERY REWRITE TO cedar; GRANT ANALYZE ANY TO cedar; GRANT DROP ANY TRIGGER TO cedar; GRANT EXECUTE ANY PROCEDURE TO cedar; GRANT SELECT ANY TABLE TO cedar WITH ADMIN OPTION; GRANT ALTER ANY TABLE TO cedar; GRANT UNLIMITED TABLESPACE TO cedar WITH ADMIN OPTION; GRANT CREATE SESSION TO cedar; GRANT CREATE ANY TRIGGER TO cedar; GRANT DROP ANY PROCEDURE TO cedar WITH ADMIN OPTION; GRANT ALTER ANY PROCEDURE TO cedar; GRANT DROP PUBLIC SYNONYM TO cedar WITH ADMIN OPTION; GRANT DROP ANY SYNONYM TO cedar WITH ADMIN OPTION; GRANT MANAGE SCHEDULER TO cedar WITH ADMIN OPTION; GRANT CREATE ANY PROCEDURE TO cedar; GRANT CREATE PROCEDURE TO cedar WITH ADMIN OPTION; GRANT CREATE SEQUENCE TO cedar; GRANT CREATE VIEW TO cedar WITH ADMIN OPTION; GRANT CREATE SYNONYM TO cedar; GRANT DROP ANY INDEX TO cedar; GRANT DELETE ANY TABLE TO cedar; GRANT CREATE ANY TABLE TO cedar; GRANT CREATE ANY JOB TO cedar WITH ADMIN OPTION; GRANT SELECT ANY DICTIONARY TO cedar WITH ADMIN OPTION; GRANT CREATE ROLE TO cedar; GRANT CREATE ANY SYNONYM TO cedar WITH ADMIN OPTION; GRANT ALTER SESSION TO cedar WITH ADMIN OPTION; GRANT EXECUTE ON sys.dbms_aq TO cedar; GRANT EXECUTE ON sys.dbms_aqadm TO cedar; GRANT EXECUTE ON sys.dbms_network_acl_admin TO cedar; GRANT ALL ON sys.DBMS_LOCK TO cedar; 这个SQL在oracle 能用吗
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值