向 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 TOUSER1WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1WITH ADMIN OPTION;
无需对已获得 PUBLIC 的对象重新授权。如果您使用 grant_sys_object 过程重新授予访问权,则此过程调用将成功。