授予和撤销对 RDS for Db2 的权限
用户通过附加到数据库的组中的成员资格获得对数据库的访问权限。
使用以下过程授予和撤销用于控制数据库访问权限的权限。
这些过程使用在本地计算机上运行的 IBM Db2 CLP 连接到 RDS for Db2 数据库实例。请务必对 TCPIP 节点和数据库进行编目,以连接到在本地计算机上运行的 RDS for Db2 数据库实例。有关更多信息,请参阅 使用 IBM Db2 CLP 连接到 Amazon RDS for Db2 数据库实例。
授予用户访问您的数据库的权限
授予用户访问您的数据库的权限
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
此命令生成类似于以下示例的输出:
Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
-
通过调用
rdsadmin.add_user
将用户添加到您的授权列表。有关更多信息,请参阅 rdsadmin.add_user。db2 "call rdsadmin.add_user( '
username
', 'password
', 'group_name
,group_name
')" -
(可选)通过调用
rdsadmin.add_groups
向用户添加其它组。有关更多信息,请参阅 rdsadmin.add_groups。db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')" -
确认用户可用的权限。在以下示例中,用您自己的信息替换
rds_database_alias
、master_user
和master_password
。另外,将username
替换为用户的用户名。db2 terminate db2 connect to
rds_database_alias
usermaster_user
usingmaster_password
db2 "SELECT SUBSTR(AUTHORITY,1,20) AUTHORITY, D_USER, D_GROUP, D_PUBLIC FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('username
', 'U') ) AS T ORDER BY AUTHORITY"此命令生成类似于以下示例的输出:
AUTHORITY D_USER D_GROUP D_PUBLIC -------------------- ------ ------- -------- ACCESSCTRL N N N BINDADD N N N CONNECT N N N CREATETAB N N N CREATE_EXTERNAL_ROUT N N N CREATE_NOT_FENCED_RO N N N CREATE_SECURE_OBJECT N N N DATAACCESS N N N DBADM N N N EXPLAIN N N N IMPLICIT_SCHEMA N N N LOAD N N N QUIESCE_CONNECT N N N SECADM N N N SQLADM N N N SYSADM * N * SYSCTRL * N * SYSMAINT * N * SYSMON * N * WLMADM N N N
-
将 RDS for Db2 角色
ROLE_NULLID_PACKAGES
、ROLE_TABLESPACES
和ROLE_PROCEDURES
授予您向其添加用户的组。有关更多信息,请参阅 Amazon RDS for Db2 默认角色。注意
我们在
RESTRICTIVE
模式下创建 RDS for Db2 数据库实例。因此,RDS for Db2 角色ROLE_NULLID_PACKAGES
、ROLE_TABLESPACES
和ROLE_PROCEDURES
授予对 IBM Db2 CLP 和 Dynamic SQL 的NULLID
软件包的执行权限。这些角色还授予用户对表空间的权限。-
连接到 Db2 数据库。在以下示例中,用您自己的信息替换
database_name
、master_user
和master_password
。db2 connect to
database_name
usermaster_user
usingmaster_password
-
将角色
ROLE_NULLED_PACKAGES
授予组。在以下示例中,将group_name
替换为您要向其中添加该角色的组的名称。db2 "grant role ROLE_NULLID_PACKAGES to group
group_name
" -
将角色
ROLE_TABLESPACES
授予同一个组。在以下示例中,将group_name
替换为您要向其中添加该角色的组的名称。db2 "grant role ROLE_TABLESPACES to group
group_name
" -
将角色
ROLE_PROCEDURES
授予同一个组。在以下示例中,将group_name
替换为您要向其中添加该角色的组的名称。db2 "grant role ROLE_PROCEDURES to group
group_name
"
-
-
向已将用户添加到的组授予
connect
、bindadd
、createtab
和IMPLICIT_SCHEMA
权限。在以下示例中,将group_name
替换为将用户添加到的第二个组的名称。db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to group
group_name
" -
对将用户添加到的每个其它组重复步骤 4 到 6。
-
通过以用户身份进行连接、创建表、向表中插入值以及从表中返回数据,测试用户的访问权限。在以下示例中,将
rds_database_alias
、username
和password
替换为数据库的名称以及用户的用户名和密码。db2 connect to
rds_database_alias
userusername
usingpassword
db2 "create table t1(c1 int not null)" db2 "insert into t1 values (1),(2),(3),(4)" db2 "select * from t1"
更改用户的密码
更改用户的密码
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.change_password
更改密码。有关更多信息,请参阅 rdsadmin.change_password。db2 "call rdsadmin.change_password( '
username
', 'new_password
')"
向用户添加组
向用户添加组
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.add_groups
向用户添加组。有关更多信息,请参阅 rdsadmin.add_groups。db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')"
从用户中删除组
从用户中删除组
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.remove_groups
删除组。有关更多信息,请参阅 rdsadmin.remove_groups。db2 "call rdsadmin.remove_groups( '
username
', 'group_name
,group_name
')"
删除用户
从授权列表中删除用户
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.remove_user
将用户从您的授权列表中删除。有关更多信息,请参阅 rdsadmin.remove_user。db2 "call rdsadmin.remove_user('
username
')"
列出用户
要列出授权列表上的用户,请调用 rdsadmin.list_users
存储过程。有关更多信息,请参阅 rdsadmin.list_users。
db2 "call rdsadmin.list_users()"
创建角色
您可以使用 rdsadmin.create_role 存储过程创建角色。
创建角色
-
连接到
rdsadmin
数据库。在以下示例中,用您的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
将 Db2 设置为输出内容。
db2 set serveroutput on
-
创建角色。有关更多信息,请参阅 rdsadmin.create_role。
db2 "call rdsadmin.create_role( '
database_name
', 'role_name
')" -
将 Db2 设置为不输出内容。
db2 set serveroutput off
授予角色
您可以使用 rdsadmin.grant_role 存储过程为角色、用户或组分配角色。
分配角色
-
连接到
rdsadmin
数据库。在以下示例中,用您的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
将 Db2 设置为输出内容。
db2 set serveroutput on
-
分配角色。有关更多信息,请参阅 rdsadmin.grant_role。
db2 "call rdsadmin.grant_role( '
database_name
', 'role_name
', 'grantee
', 'admin_option
')" -
将 Db2 设置为不输出内容。
db2 set serveroutput off
撤销角色
您可以使用 rdsadmin.revoke_role 存储过程从角色、用户或组撤销角色。
撤销角色
-
连接到
rdsadmin
数据库。在以下示例中,用您的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
撤销角色。有关更多信息,请参阅 rdsadmin.revoke_role。
db2 "call rdsadmin.revoke_role( ?, '
database_name
', 'role_name
', 'grantee
')"
授予数据库授权
拥有 DBADM
授权的主用户可以向角色、用户或组授予 DBADM
、ACCESSCTRL
或 DATAACCESS
授权。
授予数据库授权
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.dbadm_grant
授予用户访问权限。有关更多信息,请参阅 rdsadmin.dbadm_grant。db2 "call rdsadmin.dbadm_grant( ?, '
database_name
, 'authorization
', 'grantee
')"
使用案例示例
以下过程将引导您完成创建角色、向该角色授予 DBADM
授权、将该角色分配给用户以及将该角色授予组。
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
为名为
TESTDB
的数据库创建一个名为PROD_ROLE
的角色。有关更多信息,请参阅 rdsadmin.create_role。db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
-
将该角色分配给名为
PROD_USER
的用户。PROD_USER
已获得分配角色的管理员授权。有关更多信息,请参阅 rdsadmin.grant_role。db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
-
(可选)提供其它授权或权限。以下示例针对名为
FUNDPROD
的数据库向名为PROD_ROLE
的角色授予DBADM
授权。有关更多信息,请参阅 rdsadmin.dbadm_grant。db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
-
终止会话。
db2 terminate
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
TESTDB
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to TESTDB user
master_username
usingmaster_password
-
向该角色添加更多授权。
db2 "grant connect, implicit_schema on database to role PROD_ROLE"
-
将角色
PROD_ROLE
授予组。db2 "grant role PROD_ROLE to group PRODGRP"
属于组 PRODGRP
的用户现在可以执行诸如连接到 TESTDB
数据库、创建表或创建架构之类的操作。
撤销数据库授权
拥有 DBADM
授权的主用户可以从角色、用户或组撤销 DBADM
、ACCESSCTRL
或 DATAACCESS
授权。
撤销数据库授权
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
通过调用
rdsadmin.dbadm_revoke
撤销用户访问权限。有关更多信息,请参阅 rdsadmin.dbadm_revoke。db2 "call rdsadmin.dbadm_revoke( ?, '
database_name
, 'authorization
', 'grantee
')"