用于对 RDS for Db2 授予和撤销权限的存储过程 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用于对 RDS for Db2 授予和撤销权限的存储过程

本主题中介绍的内置存储过程可管理 Amazon RDS for Db2 数据库的用户、角色、组和授权。要运行这些过程,主用户必须先连接到 rdsadmin 数据库。

有关使用这些存储过程的任务,请参阅授予和撤销对 RDS for Db2 的权限

请参阅以下内置存储过程,了解其语法、参数、用法说明和示例。

rdsadmin.create_role

创建角色。

语法

db2 "call rdsadmin.create_role( 'database_name', 'role_name')"

参数

以下参数为必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

role_name

您要创建的角色的名称。数据类型为 varchar

使用说明

有关检查创建角色的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例为数据库 DB2DB 创建一个名为 MY_ROLE 的角色。

db2 "call rdsadmin.create_role( 'DB2DB', 'MY_ROLE')"

rdsadmin.grant_role

将角色分配给角色、用户或组。

语法

db2 "call rdsadmin.grant_role( ?, 'database_name', 'role_name', 'grantee', 'admin_option')"

参数

以下输出参数是必需参数:

?

一个参数标记,用于输出任务的唯一标识符。此参数仅接受 ?

以下输入参数是必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

role_name

您要创建的角色的名称。数据类型为 varchar

grantee

要接收授权的角色、用户或组。数据类型为 varchar。有效值:ROLEUSERGROUPPUBLIC

格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“USER user1, user2, GROUP group1, group2”。将名称替换为您自己的信息。

以下输入参数为可选参数:

admin_option

指定被授权者 ROLE 是否具有分配角色的 DBADM 授权。数据类型为 char。默认为 N

使用说明

有关检查分配角色的状态的信息,请参阅rdsadmin.get_task_status

示例

示例 1:为角色、用户和组分配角色并授予权限

下面的示例将对于数据库 TESTDB 的名为 ROLE_TEST 的角色分配给名为 role1 的角色、名为 user1 的用户和名为 group1 的组。ROLE_TEST 获得分配角色的管理员授权。

db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'ROLE_TEST', 'ROLE role1, USER user1, GROUP group1', 'Y')"

示例 2:为角色分配 PUBLIC 但不授予权限

下面的示例将针对数据库 TESTDB 的名为 ROLE_TEST 的角色分配给 PUBLICROLE_TEST 未获得分配角色的管理员授权。

db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'ROLE_TEST', 'PUBLIC')"

rdsadmin.revoke_role

从角色、用户或组撤销角色。

语法

db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"

参数

以下输出参数是必需参数:

?

一个参数标记,用于输出任务的唯一标识符。此参数仅接受 ?。

以下输入参数是必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

role_name

您要撤销的角色的名称。数据类型为 varchar

grantee

要失去授权的角色、用户或组。数据类型为 varchar。有效值:ROLEUSERGROUPPUBLIC

格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“USER user1, user2, GROUP group1, group2”。将名称替换为您自己的信息。

使用说明

有关如何检查角色撤销状态的信息,请参阅rdsadmin.get_task_status

示例

示例 1:从角色、用户和组中撤消角色

以下示例从名为 role1 的角色、名为 user1 的用户和名为 group1 的组中撤销数据库 TESTDB 的名为 ROLE_TEST 的角色。

db2 "call rdsadmin.revoke_role( ?, 'TESTDB', 'ROLE_TEST', 'ROLE role1, USER user1, GROUP group1')"

示例 2:从 PUBLIC 撤消角色

以下示例从 PUBLIC 撤销数据库 TESTDB 的名为 ROLE_TEST 的角色。

db2 "call rdsadmin.revoke_role( ?, 'TESTDB', 'ROLE_TEST', 'PUBLIC')"

rdsadmin.drop_role

删除角色。

语法

db2 "call rdsadmin.drop_role( ?, 'database_name', 'role_name')"

参数

以下输出参数是必需参数:

?

一个参数标记,用于输出任务的唯一标识符。此参数仅接受 ?。

以下输入参数是必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

role_name

您要删除的角色的名称。数据类型为 varchar

使用说明

有关如何检查角色删除状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例删除数据库 TESTDB 中名为 ROLE_TEST 的角色。

db2 "call rdsadmin.drop_role( ?, 'TESTDB', 'ROLE_TEST')"

rdsadmin.add_user

将用户添加到授权列表。

语法

db2 "call rdsadmin.add_user( 'username', 'password', 'group_name,group_name')"

参数

以下参数为必需参数:

username

用户的用户名。数据类型为 varchar

密码

用户的密码。数据类型为 varchar

以下参数为可选参数:

group_name

要将用户添加到的组的名称。数据类型为 varchar。默认值是空字符串或 Null。

使用说明

您可以将用户添加到一个组,也可以通过用逗号分隔组名称添加到多个组。

您可以在创建新用户时创建组,也可以在向现有用户添加组时创建组。无法单独创建组。

注意

您可以通过调用 rdsadmin.add_user 添加的最大用户数为 5000。

有关检查添加用户的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例创建了一个名为 jorge_souza 的用户,并将该用户分配给名为 salesinside_sales 的组。

db2 "call rdsadmin.add_user( 'jorge_souza', '*******', 'sales,inside_sales')"

rdsadmin.change_password

更改用户的密码。

语法

db2 "call rdsadmin.change_password( 'username', 'new_password')"

参数

以下参数为必需参数:

username

用户的用户名。数据类型为 varchar

new_password

用户的新密码。数据类型为 varchar

使用说明

有关检查更改密码的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例更改 jorge_souza 的密码。

db2 "call rdsadmin.change_password( 'jorge_souza', '*******')"

rdsadmin.list_users

列出授权列表中的用户。

语法

db2 "call rdsadmin.list_users()"

使用说明

有关检查列出用户的状态的信息,请参阅rdsadmin.get_task_status

rdsadmin.remove_user

将用户从授权列表中移除。

语法

db2 "call rdsadmin.remove_user('username')"

参数

以下参数是必需参数:

username

用户的用户名。数据类型为 varchar

使用说明

有关检查移除用户的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例移除 jorge_souza 访问 RDS for Db2 数据库实例中的数据库的权限。

db2 "call rdsadmin.remove_user('jorge_souza')"

rdsadmin.add_groups

向用户添加组。

语法

db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"

参数

以下参数为必需参数:

username

用户的用户名。数据类型为 varchar

group_name

要将用户添加到的组的名称。数据类型为 varchar。默认值是空字符串。

使用说明

您可以向用户添加一个组,也通过用逗号分隔组名称来添加多个组。有关检查添加组的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例将 direct_salesb2b_sales 组添加到用户 jorge_souza

db2 "call rdsadmin.add_groups( 'jorge_souza', 'direct_sales,b2b_sales')"

rdsadmin.remove_groups

从用户中移除组。

语法

db2 "call rdsadmin.remove_groups( 'username', 'group_name,group_name')"

参数

以下参数为必需参数:

username

用户的用户名。数据类型为 varchar

group_name

要从中移除用户的组的名称。数据类型为 varchar

使用说明

可以从用户中移除一个组,也可以通过用逗号分隔组名称来移除多个组。

有关检查移除组的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例从用户 jorge_souza 中移除 direct_salesb2b_sales 组。

db2 "call rdsadmin.remove_groups( 'jorge_souza', 'direct_sales,b2b_sales')"

rdsadmin.dbadm_grant

向角色、用户或组授予 DBADMACCESSCTRLDATAACCESS 授权。

语法

db2 "call rdsadmin.dbadm_grant( ?, 'database_name', 'authorization', 'grantee')"

参数

以下输出参数是必需参数:

?

一个参数标记,用于输出任务的唯一标识符。此参数仅接受 ?

以下输入参数是必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

授权

要授予的授权类型。数据类型为 varchar。有效值:DBADMACCESSCTRLDATAACCESS

使用逗号分隔多个类型。

grantee

要接收授权的角色、用户或组。数据类型为 varchar。有效值:ROLEUSERGROUP

格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“USER user1, user2, GROUP group1, group2”。将名称替换为您自己的信息。

使用说明

接收访问权限的角色必须存在。

有关检查授予数据库管理员访问权限的状态的信息,请参阅rdsadmin.get_task_status

示例

示例 1:向角色授予数据库管理员访问权限

以下示例向名为 TESTDB 的数据库中的 ROLE_DBA 角色授予数据库管理员访问权限。

db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'ROLE ROLE_DBA')"

示例 2:向用户和组授予数据库管理员访问权限

以下示例向名为 TESTDB 的数据库中的 user1group1 授予数据库管理员访问权限。

db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'USER user1, GROUP group1')"

示例 3:向多个用户和组授予数据库管理员访问权限

以下示例向名为 TESTDB 的数据库中的 user1user2group1group2 授予数据库管理员访问权限。

db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'USER user1, user2, GROUP group1, group2')"

rdsadmin.dbadm_revoke

从角色、用户或组撤销 DBADMACCESSCTRLDATAACCESS 授权。

语法

db2 "call rdsadmin.dbadm_revoke( ?, 'database_name', 'authorization', 'grantee')"

参数

以下输出参数是必需参数:

?

任务的唯一标识符。此参数仅接受 ?

以下输入参数是必需参数:

database_name

命令将在其上运行的数据库的名称。数据类型为 varchar

授权

要撤销的授权类型。数据类型为 varchar。有效值:DBADMACCESSCTRLDATAACCESS

使用逗号分隔多个类型。

grantee

要从中撤销授权的角色、用户或组。数据类型为 varchar。有效值:ROLEUSERGROUP

格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“USER user1, user2, GROUP group1, group2”。将名称替换为您自己的信息。

使用说明

有关检查撤销数据库管理员访问权限的状态的信息,请参阅rdsadmin.get_task_status

示例

示例 1:撤消角色的数据库管理员访问权限

以下示例对名为 TESTDB 的数据库中的 ROLE_DBA 角色撤销数据库管理员访问权限。

db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'ROLE ROLE_DBA')"

示例 2:撤消用户和群组的数据库管理员访问权限

以下示例对名为 TESTDB 的数据库中的 user1group1 撤销数据库管理员访问权限。

db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'USER user1, GROUP group1')"

示例 3:撤消多个用户和组的数据库管理员访问权限

以下示例对名为 TESTDB 的数据库中的 user1user2group1group2 撤销数据库管理员访问权限。

db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'USER user1, user2, GROUP group1, group2')"