授予和撤销权限
以下存储过程授予和撤销对于 Amazon RDS for Db2 数据库的权限。要运行这些过程,主用户必须先连接到 rdsadmin
数据库。
主题
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
。有效值:ROLE
、USER
、GROUP
、PUBLIC
。格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“
USER
”。将名称替换为您自己的信息。user1
,user2
, GROUPgroup1
,group2
以下输入参数为可选参数:
admin_option
-
指定被授权者
ROLE
是否具有分配角色的DBADM
授权。数据类型为char
。默认为N
。
使用说明
有关检查分配角色的状态的信息,请参阅rdsadmin.get_task_status。
示例
下面的示例将对于数据库 TESTDB
的名为 ROLE_TEST
的角色分配给名为 role1
的角色、名为 user1
的用户和名为 group1
的组。ROLE_TEST
获得分配角色的管理员授权。
db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'ROLE_TEST', 'ROLE role1, USER user1, GROUP group1', 'Y')"
下面的示例将针对数据库 TESTDB
的名为 ROLE_TEST
的角色分配给 PUBLIC
。ROLE_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
。有效值:ROLE
、USER
、GROUP
、PUBLIC
。格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“
USER
”。将名称替换为您自己的信息。user1
,user2
, GROUPgroup1
,group2
使用说明
有关检查分配角色的状态的信息,请参阅rdsadmin.get_task_status。
示例
以下示例从名为 role1
的角色、名为 user1
的用户和名为 group1
的组中撤销数据库 TESTDB
的名为 ROLE_TEST
的角色。
db2 "call rdsadmin.revoke_role( ?, 'TESTDB', 'ROLE_TEST', 'ROLE role1, USER user1, GROUP group1')"
以下示例从 PUBLIC
撤销数据库 TESTDB
的名为 ROLE_TEST
的角色。
db2 "call rdsadmin.revoke_role( ?, 'TESTDB', 'ROLE_TEST', 'PUBLIC')"
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
的用户,并将该用户分配给名为 sales
和 inside_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_sales
和 b2b_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_sales
和 b2b_sales
组。
db2 "call rdsadmin.remove_groups( 'jorge_souza', 'direct_sales,b2b_sales')"
rdsadmin.dbadm_grant
向角色、用户或组授予 DBADM
、ACCESSCTRL
或 DATAACCESS
授权。
语法
db2 "call rdsadmin.dbadm_grant( ?, '
database_name
', 'authorization
', 'grantee
')"
参数
以下输出参数是必需参数:
- ?
-
一个参数标记,用于输出任务的唯一标识符。此参数仅接受
?
。
以下输入参数是必需参数:
database_name
-
命令将在其上运行的数据库的名称。数据类型为
varchar
。 授权
-
要授予的授权类型。数据类型为
varchar
。有效值:DBADM
、ACCESSCTRL
、DATAACCESS
。使用逗号分隔多个类型。
grantee
-
要接收授权的角色、用户或组。数据类型为
varchar
。有效值:ROLE
、USER
、GROUP
。格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“
USER
”。将名称替换为您自己的信息。user1
,user2
, GROUPgroup1
,group2
使用说明
接收访问权限的角色必须存在。
有关检查授予数据库管理员访问权限的状态的信息,请参阅rdsadmin.get_task_status。
示例
以下示例为角色 ROLE_DBA
授予对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'ROLE ROLE_DBA')"
以下示例为 user1
和 group1
授予对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'USER user1, GROUP group1')"
以下示例为 user1
、user2
、group1
和 group2
授予对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_grant( ?, 'TESTDB', 'DBADM', 'USER user1, user2, GROUP group1, group2')"
rdsadmin.dbadm_revoke
从角色、用户或组撤销 DBADM
、ACCESSCTRL
或 DATAACCESS
授权。
语法
db2 "call rdsadmin.dbadm_revoke( ?, '
database_name
', 'authorization
', 'grantee
')"
参数
以下输出参数是必需参数:
- ?
-
任务的唯一标识符。此参数仅接受
?
。
以下输入参数是必需参数:
database_name
-
命令将在其上运行的数据库的名称。数据类型为
varchar
。 授权
-
要撤销的授权类型。数据类型为
varchar
。有效值:DBADM
、ACCESSCTRL
、DATAACCESS
。使用逗号分隔多个类型。
grantee
-
要从中撤销授权的角色、用户或组。数据类型为
varchar
。有效值:ROLE
、USER
、GROUP
。格式必须是值后跟名称。用英文逗号分隔多个值和名称。示例:“
USER
”。将名称替换为您自己的信息。user1
,user2
, GROUPgroup1
,group2
使用说明
有关检查撤销数据库管理员访问权限的状态的信息,请参阅rdsadmin.get_task_status。
示例
以下示例为角色 ROLE_DBA
撤销对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'ROLE ROLE_DBA')"
以下示例为 user1
和 group1
撤销对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'USER user1, GROUP group1')"
以下示例为 user1
、user2
、group1
和 group2
撤销对名为 TESTDB
的数据库的数据库管理员访问权限。
db2 "call rdsadmin.dbadm_revoke( ?, 'TESTDB', 'DBADM', 'USER user1, user2, GROUP group1, group2')"