oracle权限with admin option和with grant option的用法

本文详细解析了WITH ADMIN OPTION与WITH GRANT OPTION的区别。前者允许被授权者进一步授权,且权限收回不影响下级用户;后者也允许进一步授权,但管理员收回权限时,所有下级用户的权限也会一并失效。

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

1、with admin option
with admin option的意思是被授予该权限的用户有权将某个权限(如create any table)授予其他用户或角色,取消是不级联的
如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限。但管理员可以显式收回B create session的权限,即直接revoke create session from B.

2、with grant option
with grant option的意思是:权限赋予/取消是级联的,如将with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
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
<think>好的,我现在需要帮助用户解决关于数据库中`WITH GRANT OPTION`的用法以及`NULL`相关的问题。首先,用户的问题分为两部分:`WITH GRANT OPTION``NULL`。我需要分别处理这两个部分,确保回答结构清晰,符合用户的要求。 首先,关于`WITH GRANT OPTION`,我记得这是SQL中用于权限管理的子句,通常与`GRANT`语句一起使用。它的作用是允许被授予权限用户进一步将权限授予其他用户。例如,如果用户A授予用户B某个权限加上`WITH GRANT OPTION`,那么用户B可以将这个权限授予用户C。我需要确认这个理解是否正确,找到合适的例子来说明。可能需要参考数据库权限管理的文档或示例,比如引用中的例子可能与用户权限设置有关,但当前引用中没有直接提到`WITH GRANT OPTION`,所以可能需要依靠内部知识。 接下来是`NULL`的问题。用户提到了“解决相关问题”,可能需要解释`NULL`在数据库中的含义、用法以及注意事项。根据引用[1],`NULL`用于将字段设置为空值,例如`UPDATE users SET phone=NULL WHERE user_id=1;`。引用[4]提到`NULL``undefined`的区别,但这里需要集中在数据库中的`NULL`。在SQL中,`NULL`表示缺失或未知的值,处理需要注意使用`IS NULL`或`IS NOT NULL`进行判断,而不是等号。同,聚合函数如`COUNT`会忽略`NULL`值,`NULL`在索引中的处理也可能有特殊规则。此外,插入记录若字段允许`NULL`,可以显式插入`NULL`或省略该字段。 现在需要组织这些信息,确保符合用户的要求:使用中文回答,正确使用LaTeX格式,生成相关问题,引用相关段落添加标识。同回答要结构清晰,分步骤解释。 对于`WITH GRANT OPTION`,需要给出定义、示例注意事项。比如,权限的传递性,回收权限的级联效应(使用`REVOKE ... CASCADE`)。这部分可能需要分点说明,附上代码示例。 对于`NULL`,需要解释其含义,正确使用方法(如更新字段为`NULL`),查询的注意事项,聚合函数的影响,索引处理,插入用法,以及与空字符串的区别。每个部分都要简明扼要,可能引用现有的例子,如引用[1]中的`UPDATE`语句。 生成的相关问题需要围绕这两个主题,比如`WITH GRANT OPTION`的权限回收、`NULL`在查询中的处理、与空字符串的区别等。 最后,检查LaTeX格式是否正确,所有数学表达式独立公式是否使用$...$或$$...$$,引用标识是否正确添加。例如,引用[1]用于`UPDATE`语句,引用[4]用于`NULL`与空字符串的区别部分。 现在整理这些思路,形成结构化的回答,确保每个部分清晰,自然插入引用标记。</think>### 关于 `WITH GRANT OPTION` 的用法 `WITH GRANT OPTION` 是 SQL 中用于权限管理的子句,允许被授权的用户权限进一步授予其他用户。其核心作用包括: 1. **权限传递**:用户 A 授予用户 B 权限添加此选项,用户 B 可将权限授予用户 C。 2. **权限回收级联**:若用户 A 撤销用户 B 的权限,则用户 B 授予用户 C 的权限也会被级联撤销(需配合 `REVOKE ... CASCADE` 使用)[^1]。 #### 示例 ```sql -- 授予用户B查询权限允许其继续授权 GRANT SELECT ON employees TO userB WITH GRANT OPTION; ``` 此用户 B 可执行: ```sql GRANT SELECT ON employees TO userC; -- 合法操作 ``` #### 注意事项 - 需谨慎使用,避免权限过度扩散。 - 回收权限需明确是否使用 `CASCADE` 选项[^1]。 --- ### 关于 `NULL` 的用法与注意事项 `NULL` 在数据库中表示“缺失值”或“未知值”,需注意以下规则: #### 1. **赋值与更新** 通过 `UPDATE` 语句将字段设为 `NULL`(需字段允许为空): ```sql UPDATE users SET phone = NULL WHERE user_id = 1; -- 引用[1]示例 ``` #### 2. **查询条件** 需使用 `IS NULL` 或 `IS NOT NULL` 判断: ```sql SELECT * FROM users WHERE phone IS NULL; -- 正确 SELECT * FROM users WHERE phone = NULL; -- 错误(不会返回结果) ``` #### 3. **聚合函数的影响** 如 `COUNT(column)` 忽略 `NULL`,但 `COUNT(*)` 统计所有行: ```sql SELECT COUNT(phone) FROM users; -- 仅统计非NULL值 ``` #### 4. **索引与性能** - 唯一索引中通常允许单个 `NULL` 值(不同数据库实现可能不同)。 - 查询 `WHERE column IS NULL` 可能无法有效利用索引。 #### 5. **插入数据的处理** 若字段允许 `NULL`,插入可显式赋值或省略: ```sql INSERT INTO users (user_id, phone) VALUES (2, NULL); -- 显式插入NULL INSERT INTO users (user_id) VALUES (3); -- 隐式插入NULL(若phone字段允许) ``` #### 6. **与空字符串的区别** - `NULL` 表示“无值”,空字符串 `''` 是有效的字符串值[^4]。 - 例如:`'' = ''` 返回 `true`,但 `NULL = NULL` 返回 `NULL`(实际需用 `IS NULL` 判断)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值