执行 RDS for Db2 数据库实例的常见系统任务 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

执行 RDS for Db2 数据库实例的常见系统任务

您可以在运行 Db2 的 Amazon RDS 数据库实例上执行某些与系统相关的常见数据库管理员任务。为了提供托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级权限的系统过程和表。

创建自定义数据库端点

迁移到 RDS for Db2 时,您可以使用自定义数据库端点 URL 来最大限度地减少对应用程序的更改。例如,如果您使用 db2.example.com 作为当前 DNS 记录,则可以将其添加到 Amazon Route 53。在 Route 53 中,您可以使用私有托管区将当前 DNS 数据库端点映射到 RDS for Db2 数据库端点。要为 Amazon RDS 数据库端点添加自定义 ACNAME 记录,请参阅《Amazon Route 53 开发人员指南》中的 Registering and managing domains using Amazon Route 53

注意

如果您无法将域转到 Route 53,则可以使用 DNS 提供商为 RDS for Db2 数据库端点 URL 创建 CNAME 记录。请查阅您的 DNS 提供商文档。

授予和撤销权限

用户通过附加到数据库的组中的成员资格获得对数据库的访问权限。如果您从用户中移除所有附加到数据库的组,则该用户将无法连接到数据库。

使用以下过程授予和撤销用于控制数据库访问权限的权限。

这些过程使用在本地计算机上运行的 IBM Db2 CLP 连接到 RDS for Db2 数据库实例。请务必对 TCPIP 节点和数据库进行编目,以连接到在本地计算机上运行的 RDS for Db2 数据库实例。有关更多信息,请参阅 使用 IBM Db2 CLP 连接到 RDS for Db2 数据库实例

授予用户访问您的数据库的权限

授予用户访问您的数据库的权限
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password

    此命令生成类似于以下示例的输出:

    Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
  2. 通过调用 rdsadmin.add_user 将用户添加到您的授权列表。有关更多信息,请参阅 rdsadmin.add_user

    db2 "call rdsadmin.add_user( 'username', 'password', 'group_name,group_name')"
  3. (可选)通过调用 rdsadmin.add_groups 向用户添加其它组。有关更多信息,请参阅 rdsadmin.add_groups

    db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"
  4. 确认用户可用的权限。在以下示例中,用您自己的信息替换 rds_database_aliasmaster_usermaster_password。另外,将 username 替换为用户的用户名。

    db2 terminate db2 connect to rds_database_alias user master_user using master_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
  5. 将 RDS for Db2 角色 ROLE_NULLID_PACKAGESROLE_TABLESPACESROLE_PROCEDURES 授予您向其添加用户的组。

    注意

    我们在 RESTRICTIVE 模式下创建 RDS for Db2 数据库实例。因此,RDS for Db2 角色 ROLE_NULLID_PACKAGESROLE_TABLESPACESROLE_PROCEDURES 授予对 IBM Db2 CLP 和 Dynamic SQL 的 NULLID 软件包的执行权限。这些角色还授予用户对表空间的权限。

    1. 连接到 Db2 数据库。在以下示例中,用您自己的信息替换 database_namemaster_usermaster_password

      db2 connect to database_name user master_user using master_password
    2. 将角色 ROLE_NULLED_PACKAGES 授予组。在以下示例中,将 group_name 替换为您要向其中添加该角色的组的名称。

      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
    3. 将角色 ROLE_TABLESPACES 授予同一个组。在以下示例中,将 group_name 替换为您要向其中添加该角色的组的名称。

      db2 "grant role ROLE_TABLESPACES to group group_name"
    4. 将角色 ROLE_PROCEDURES 授予同一个组。在以下示例中,将 group_name 替换为您要向其中添加该角色的组的名称。

      db2 "grant role ROLE_PROCEDURES to group group_name"
  6. 向已将用户添加到的组授予 connectbindaddcreatetabIMPLICIT_SCHEMA 权限。在以下示例中,将 group_name 替换为将用户添加到的第二个组的名称。

    db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
  7. 对将用户添加到的每个其它组重复步骤 4 到 6。

  8. 通过以用户身份进行连接、创建表、向表中插入值以及从表中返回数据,测试用户的访问权限。在以下示例中,将 rds_database_aliasusernamepassword 替换为数据库的名称以及用户的用户名和密码。

    db2 connect to rds_database_alias user username using password db2 "create table t1(c1 int not null)" db2 "insert into t1 values (1),(2),(3),(4)" db2 "select * from t1"

更改用户的密码

更改用户的密码
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 rdsadmin.change_password 更改密码。有关更多信息,请参阅 rdsadmin.change_password

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

向用户添加组

向用户添加组
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 rdsadmin.add_groups 向用户添加组。有关更多信息,请参阅 rdsadmin.add_groups

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

从用户中删除组

从用户中删除组
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 rdsadmin.remove_groups 删除组。有关更多信息,请参阅 rdsadmin.remove_groups

    警告

    如果您从用户中移除所有附加到数据库的组,则该用户将无法连接到数据库。这是因为 Amazon RDS 向组而不是用户授予权限。

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

删除用户

从授权列表中删除用户
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 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 存储过程创建角色。

创建角色
  1. 连接到 rdsadmin 数据库。在以下示例中,用您的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 将 Db2 设置为输出内容。

    db2 set serveroutput on
  3. 创建角色。有关更多信息,请参阅 rdsadmin.create_role

    db2 "call rdsadmin.create_role( 'database_name', 'role_name')"
  4. 将 Db2 设置为不输出内容。

    db2 set serveroutput off

授予角色

您可以使用 rdsadmin.grant_role 存储过程为角色、用户或组分配角色。

分配角色
  1. 连接到 rdsadmin 数据库。在以下示例中,用您的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 将 Db2 设置为输出内容。

    db2 set serveroutput on
  3. 分配角色。有关更多信息,请参阅 rdsadmin.grant_role

    db2 "call rdsadmin.grant_role( 'database_name', 'role_name', 'grantee', 'admin_option')"
  4. 将 Db2 设置为不输出内容。

    db2 set serveroutput off

撤销角色

您可以使用 rdsadmin.revoke_role 存储过程从角色、用户或组撤销角色。

撤销角色
  1. 连接到 rdsadmin 数据库。在以下示例中,用您的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 撤销角色。有关更多信息,请参阅 rdsadmin.revoke_role

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

授予数据库授权

拥有 DBADM 授权的主用户可以向角色、用户或组授予 DBADMACCESSCTRLDATAACCESS 授权。

授予数据库授权
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 rdsadmin.dbadm_grant 授予用户访问权限。有关更多信息,请参阅 rdsadmin.dbadm_grant

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

使用案例示例

以下过程将引导您完成创建角色、向该角色授予 DBADM 授权以及将该角色分配给用户。

创建角色、授予 DBADM 授权并将角色分配给用户
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 为名为 TESTDB 的数据库创建一个名为 PROD_ROLE 的角色。有关更多信息,请参阅 rdsadmin.create_role

    db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
  3. 将该角色分配给名为 PROD_USER 的用户。PROD_USER 已获得分配角色的管理员授权。有关更多信息,请参阅 rdsadmin.grant_role

    db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
  4. (可选)提供其它授权或权限。以下示例针对名为 FUNDPROD 的数据库向名为 PROD_ROLE 的角色授予 DBADM 授权。有关更多信息,请参阅 rdsadmin.dbadm_grant

    db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
  5. 终止会话。

    db2 terminate
  6. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 testdb 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to testdb user master_username using master_password
  7. 向该角色添加更多授权。

    db2 "grant connect, implicit_schema on database to role PROD_ROLE"

撤销数据库授权

拥有 DBADM 授权的主用户可以从角色、用户或组撤销 DBADMACCESSCTRLDATAACCESS 授权。

撤销数据库授权
  1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin 数据库。在以下示例中,用您自己的信息替换 master_usernamemaster_password

    db2 connect to rdsadmin user master_username using master_password
  2. 通过调用 rdsadmin.dbadm_revoke 撤销用户访问权限。有关更多信息,请参阅 rdsadmin.dbadm_revoke

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

连接到远程 RDS for Db2 数据库实例

连接到远程 RDS for Db2 数据库实例
  1. 运行 IBM Db2 CLP 客户端会话。有关对 RDS for Db2 数据库实例和数据库进行编目的信息,请参阅使用 IBM Db2 CLP 连接到 RDS for Db2 数据库实例。记下您的 RDS for Db2 数据库实例的主用户名和主密码。

  2. 连接到 RDS for Db2 数据库实例。在以下示例中,将 node_namemaster_usernamemaster_password 替换为您编目的 TCPIP 节点名称以及 RDS for Db2 数据库实例的主用户名和主密码。

    db2 attach to node_name user master_username using master_password

连接到远程 RDS for Db2 数据库实例后,您可以运行以下命令和其它 get snapshot 命令。有关更多信息,请参阅 IBM Db2 文档中的 GET SNAPSHOT 命令

db2 list applications db2 get snapshot for all databases db2 get snapshot for database manager db2 get snapshot for all applications