Oracle中执行GRANT语句需何种权限?UserA授权失败问题咨询
Oracle中执行GRANT语句所需权限及问题解决
在Oracle中,用户执行GRANT语句的权限要求分两种核心场景:
一、授予系统权限(如CREATE SESSION、CREATE USER)
要给其他用户授予系统权限,需满足以下任一条件:
- 自身拥有该系统权限,且被授予时附带
WITH ADMIN OPTION; - 拥有
GRANT ANY PRIVILEGE系统权限(此权限允许授予任意系统权限给其他用户)。
二、授予对象权限(如对某表的SELECT、INSERT)
要给其他用户授予对象权限,需满足以下任一条件:
- 是该对象的所有者;
- 自身拥有该对象权限,且被授予时附带
WITH GRANT OPTION; - 拥有
GRANT ANY OBJECT PRIVILEGE系统权限(此权限允许授予任意对象权限给其他用户)。
针对你的场景的解决方案
你创建的UserA仅拥有CREATE SESSION、CREATE USER、CREATE TABLESPACE权限,但这些权限未附带WITH ADMIN OPTION,也没有GRANT ANY PRIVILEGE权限,因此无法给UserB授予权限。
要让UserA具备给其他用户授权的能力,可选择以下两种方式之一:
- 给UserA的现有权限添加
WITH ADMIN OPTION:
GRANT CREATE SESSION, CREATE USER, CREATE TABLESPACE TO UserA WITH ADMIN OPTION;
这样UserA不仅能使用这些权限,还能将它们授予其他用户。
- 直接授予UserA
GRANT ANY PRIVILEGE权限:
GRANT GRANT ANY PRIVILEGE TO UserA;
此权限范围更广,允许UserA授予任意系统权限给其他用户。
内容的提问来源于stack exchange,提问作者Chin
相关产品推荐
相关产品推荐

