向 SYS 对象授予 SELECT 或 EXECUTE 权限
通常,您使用可包含多个对象的角色来传输权限。要为单个对象授予权限,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.grant_sys_object
。此过程仅授予已通过角色或直接授权授予主用户的权限。
grant_sys_object
过程具有以下参数。
重要
对于所有参数值,除非您使用区分大小写的标识符创建了用户,否则请使用大写字母。例如,如果您运行 CREATE USER
myuser
或 CREATE USER MYUSER
,则数据字典将存储 MYUSER
。但是,如果您在 CREATE USER
"MyUser"
中使用双引号,则数据字典将存储 MyUser
。
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
要授予其权限的对象的名称。对象可以是目录、函数、包、过程、序列、表或视图。对象名称的拼写必须与其在 |
|
varchar2 |
— |
是 |
要向其授予权限的对象的名称。对象可以是架构或角色。 |
|
varchar2 |
null |
是 |
— |
|
布尔值 |
false |
否 |
设置为 |
以下示例将名为 V_$SESSION
的对象的 select 权限授予名为 USER1
的用户。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
'); end; /
以下示例使用授予选项将名为 V_$SESSION
的对象的 select 权限授予名为 USER1
的用户。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
', p_grant_option =>true
); end; /
要能够授予针对某个对象的权限,您的账户必须具有通过使用授权选项或通过使用 with admin option
授予的角色直接为其授予的这些权限。在最常见的情况下,您可能希望授予已授予给 SELECT
角色的针对 DBA 视图的 SELECT_CATALOG_ROLE
权限。如果尚未使用 with admin option
将该角色直接授予您的用户,则您将无法转让此权限。如果您具有 DBA 权限,则可直接将该角色授予其他用户。
以下示例将 SELECT_CATALOG_ROLE
和 EXECUTE_CATALOG_ROLE
授予 USER1
。由于使用了 with
admin option
,因此,USER1
现在可向已获得 SELECT_CATALOG_ROLE
的 SYS 对象授予访问权。
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
无需对已获得 PUBLIC
的对象重新授权。如果您使用 grant_sys_object
过程重新授予访问权,则此过程调用将成功。