Realizar tarefas comuns do sistema para instâncias de banco de dados do Amazon RDS para Db2
É possível executar determinadas tarefas comuns de administrador de banco de dados relacionadas ao sistema nas instâncias de bancos de dados do Amazon RDS que executam o Db2. Para oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados.
Tópicos
Criar um endpoint de banco de dados personalizado
Ao migrar para o Amazon RDS para Db2, é possível usar URLs de endpoint de banco de dados personalizados para minimizar as alterações na aplicação. Por exemplo, se você usar db2.example.com
como o registro do DNS atual, poderá adicioná-lo ao Amazon Route 53. No Route 53, é possível usar zonas hospedadas privadas para associar o endpoint de banco de dados do DNS atual a um endpoint de banco de dados do RDS para Db2. Para adicionar um registro personalizado A
ou CNAME
ou um endpoint de banco de dados do Amazon RDS, consulte Registering and managing domains using Amazon Route 53 no Guia do desenvolvedor do Amazon Route 53.
nota
Se não for possível conseguir transferir o domínio para o Route 53, poderá usar o provedor de DNS para criar um registro CNAME
para o URL do endpoint do banco de dados do RDS para Db2. Consulte a documentação do provedor de DNS.
Conceder e revogar privilégios
Os usuários recebem acesso aos bancos de dados por meio da participação em grupos associados aos bancos de dados.
Use os procedimentos a seguir para conceder e revogar privilégios a fim de controlar o acesso ao banco de dados.
Esses procedimentos usam IBM Db2 CLP em execução em uma máquina local para se conectar a uma instância de banco de dados do RDS para Db2. Catalogue o nó TCP/IP e o banco de dados para se conectar à instância de banco de dados do RDS para Db2 em execução na máquina local. Para ter mais informações, consulte Conectar-se à instância de banco de dados do Amazon RDS para Db2 com o IBM Db2 CLP.
Tópicos
Conceder a um usuário acesso ao banco de dados
Como conceder a um usuário acesso ao banco de dados
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
Esse comando vai produzir uma saída semelhante ao seguinte exemplo:
Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
-
Adicione um usuário à lista de autorizações chamando
rdsadmin.add_user
. Para ter mais informações, consulte rdsadmin.add_user.db2 "call rdsadmin.add_user( '
username
', 'password
', 'group_name
,group_name
')" -
(Opcional) Adicione outros grupos ao usuário chamando
rdsadmin.add_groups
. Para ter mais informações, consulte rdsadmin.add_groups.db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')" -
Confirme as autoridades que estão disponíveis para o usuário. No exemplo a seguir, substitua
rds_database_alias
,master_user
emaster_password
por suas próprias informações. Além disso, substituausername
pelo nome do usuário.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"Esse comando vai produzir uma saída semelhante ao seguinte exemplo:
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
-
Conceda os perfis do RDS para Db2
ROLE_NULLID_PACKAGES
,ROLE_TABLESPACES
eROLE_PROCEDURES
ao grupo ao qual você adicionou o usuário. Para ter mais informações, consulte Perfis padrão do Amazon RDS para Db2.nota
Criamos instâncias de banco de dados do RDS para Db2 no modo
RESTRICTIVE
. Portanto, os perfis do RDS para Db2ROLE_NULLID_PACKAGES
,ROLE_TABLESPACES
eROLE_PROCEDURES
concedem privilégios de execução em pacotesNULLID
para IBM Db2 CLP e Dynamic SQL. Esses perfis também concedem privilégios de usuário em espaços de tabela.-
Conecte-se ao banco de dados Db2. No exemplo a seguir, substitua
database_name
,master_user
emaster_password
por suas próprias informações.db2 connect to
database_name
usermaster_user
usingmaster_password
-
Conceda o perfil
ROLE_NULLED_PACKAGES
a um grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_NULLID_PACKAGES to group
group_name
" -
Conceda o perfil
ROLE_TABLESPACES
ao mesmo grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_TABLESPACES to group
group_name
" -
Conceda o perfil
ROLE_PROCEDURES
ao mesmo grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_PROCEDURES to group
group_name
"
-
-
Conceda as autoridades
connect
,bindadd
,createtab
eIMPLICIT_SCHEMA
ao grupo ao qual você adicionou o usuário. No exemplo a seguir, substituagroup_name
pelo nome do segundo grupo ao qual você adicionou o usuário.db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to group
group_name
" -
Repita as etapas 4 a 6 para cada grupo adicional ao qual o usuário foi adicionado.
-
Para testar o acesso do usuário, faça o seguinte: conecte-se como ele, crie uma tabela, insira valores nela e exiba os dados da tabela. No exemplo a seguir, substitua
rds_database_alias
,username
epassword
pelo nome do banco de dados e pelo nome de usuário e senha do usuário.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"
Alterar a senha de um usuário
Para alterar a senha de um usuário
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Altere a senha chamando
rdsadmin.change_password
. Para ter mais informações, consulte rdsadmin.change_password.db2 "call rdsadmin.change_password( '
username
', 'new_password
')"
Adicionar grupos a um usuário
Como adicionar grupos a um usuário
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Adicione grupos a um usuário chamando
rdsadmin.add_groups
. Para ter mais informações, consulte rdsadmin.add_groups.db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')"
Remover grupos de um usuário
Como remover grupos a um usuário
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Remova grupos chamando
rdsadmin.remove_groups
. Para ter mais informações, consulte rdsadmin.remove_groups.db2 "call rdsadmin.remove_groups( '
username
', 'group_name
,group_name
')"
Remover um usuário
Como remover um usuário da lista de autorizações
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Remova um usuário da lista de autorizações chamando
rdsadmin.remove_user
. Para ter mais informações, consulte rdsadmin.remove_user.db2 "call rdsadmin.remove_user('
username
')"
Listar usuários
Para listar usuários em uma lista de autorizações, chame o procedimento armazenado rdsadmin.list_users
. Para ter mais informações, consulte rdsadmin.list_users.
db2 "call rdsadmin.list_users()"
Criar uma função
É possível usar o procedimento armazenado rdsadmin.create_role para criar um perfil.
Para criar uma função
-
Conecte-se ao banco de dados
rdsadmin
. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on
-
Crie uma função. Para ter mais informações, consulte rdsadmin.create_role.
db2 "call rdsadmin.create_role( '
database_name
', 'role_name
')" -
Defina o Db2 para não gerar conteúdo.
db2 set serveroutput off
Conceder um perfil
É possível usar o procedimento armazenado rdsadmin.grant_role para atribuir um perfil a um perfil, um usuário ou um grupo.
Como atribuir um perfil
-
Conecte-se ao banco de dados
rdsadmin
. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on
-
Atribua um perfil. Para ter mais informações, consulte rdsadmin.grant_role.
db2 "call rdsadmin.grant_role( '
database_name
', 'role_name
', 'grantee
', 'admin_option
')" -
Defina o Db2 para não gerar conteúdo.
db2 set serveroutput off
Revogar um perfil
É possível usar o procedimento armazenado rdsadmin.revoke_role para revogar um perfil de um perfil, um usuário ou um grupo.
Como revogar um perfil
-
Conecte-se ao banco de dados
rdsadmin
. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Revogue um perfil. Para ter mais informações, consulte rdsadmin.revoke_role.
db2 "call rdsadmin.revoke_role( ?, '
database_name
', 'role_name
', 'grantee
')"
Conceder autorização de banco de dados
O usuário principal, que tem autorização DBADM
, pode conceder a autorização DBADM
, ACCESSCTRL
ou DATAACCESS
a um perfil, um usuário ou um grupo.
Como conceder autorização de banco de dados
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Conceda acesso a um usuário chamando
rdsadmin.dbadm_grant
. Para ter mais informações, consulte rdsadmin.dbadm_grant.db2 "call rdsadmin.dbadm_grant( ?, '
database_name
, 'authorization
', 'grantee
')"
Exemplo de caso de uso
O procedimento a seguir explica como criar um perfil, conceder autorização DBADM
ao perfil, atribuir o perfil a um usuário e a um grupo.
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Crie um perfil chamado
PROD_ROLE
para um banco de dados chamadoTESTDB
. Para ter mais informações, consulte rdsadmin.create_role.db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
-
Atribua o perfil a um usuário denominado
PROD_USER
. OPROD_USER
recebe autorização de administrador para atribuir perfis. Para ter mais informações, consulte rdsadmin.grant_role.db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
-
(Opcional) Forneça autorização ou privilégios adicionais. O exemplo a seguir concede autorização
DBADM
a um perfil denominadoPROD_ROLE
para um banco de dados chamadoFUNDPROD
. Para ter mais informações, consulte rdsadmin.dbadm_grant.db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
-
Encerre a sessão.
db2 terminate
-
Conecte-se ao banco de dados
TESTDB
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to TESTDB user
master_username
usingmaster_password
-
Adicione mais autorizações ao perfil.
db2 "grant connect, implicit_schema on database to role PROD_ROLE"
-
Conceda o perfil
PROD_ROLE
a um grupo.db2 "grant role PROD_ROLE to group PRODGRP"
Os usuários que pertencem ao grupo PRODGRP
agora podem realizar ações como conectar-se ao banco de dados TESTDB
, criar tabelas ou esquemas.
Revogar autorização de banco de dados
O usuário principal, que tem a autorização DBADM
, pode revogar a autorização DBADM
, ACCESSCTRL
ou DATAACCESS
de um perfil, um usuário ou um grupo.
Como revogar autorização de banco de dados
-
Conecte-se ao banco de dados
rdsadmin
usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Revogue o acesso do usuário chamando
rdsadmin.dbadm_revoke
. Para ter mais informações, consulte rdsadmin.dbadm_revoke.db2 "call rdsadmin.dbadm_revoke( ?, '
database_name
, 'authorization
', 'grantee
')"
Conectar-se à instância de banco de dados remota do RDS para Db2
Como se conectar à instância de banco de dados remota do RDS para Db2
-
Execute uma sessão IBM Db2 CLP do lado do cliente. Para ter informações sobre como catalogar a instância de banco de dados e banco de dados do RDS para Db2, consulte Conectar-se à instância de banco de dados do Amazon RDS para Db2 com o IBM Db2 CLP. Anote o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2.
-
Conecte-se à instância de banco de dados do RDS para Db2. No exemplo a seguir, substitua
node_name
,master_username
emaster_password
pelo nome de nó TCPIP catalogado, além do nome de usuário principal e da senha mestra da instância de banco de dados do RDS para Db2.db2 attach to
node_name
usermaster_username
usingmaster_password
Depois de se conectar à instância de banco de dados remota do RDS para Db2, é possível executar os comandos a seguir e outros comandos get snapshot
. Para ter mais informações, consulte GET
SNAPSHOT command
db2 list applications db2 get snapshot for all databases db2 get snapshot for database manager db2 get snapshot for all applications