Objetivo
Criar um usuário no banco de dados PostgreSQL com acesso apenas para consulta (somente leitura), permitindo visualizar informações sem realizar alterações nos dados.
Esse tipo de acesso é normalmente utilizado para:
-
Ferramentas de BI;
-
Relatórios externos;
-
Auditorias;
-
Consultas gerenciais;
-
Integrações de leitura.
O que esse procedimento faz?
O script:
-
Cria um novo usuário;
-
Permite conexão ao banco de dados gestores;
-
Concede acesso de leitura às tabelas existentes;
-
Concede acesso às tabelas criadas futuramente;
-
Impede alterações nos registros.
Importante: Após a criação, o usuário somente terá acesso aos objetos para os quais forem concedidas permissões.
1. Conectar ao banco de dados
Conecte-se ao PostgreSQL utilizando um usuário com permissões administrativas (superusuário ou equivalente).
2. Criar o usuário
Substitua usuario pelo nome desejado.
CREATE USER usuario WITH PASSWORD 'gestores@2023';
3. Conceder acesso ao banco
Permite que o usuário se conecte ao banco de dados.
GRANT CONNECT ON DATABASE gestores TO usuario;
4. Conceder acesso ao schema
Permite acesso ao schema public.
GRANT USAGE ON SCHEMA public TO usuario;
5. Conceder leitura das tabelas existentes
Permite consultar todas as tabelas já existentes no schema.
GRANT SELECT ON ALL TABLES IN SCHEMA public TO usuario;
6. Conceder acesso às sequências (opcional)
Caso seja necessário consultar informações relacionadas às sequências do banco:
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO usuario;
7. Conceder acesso automático às futuras tabelas
Garante que qualquer tabela criada futuramente no schema public também possa ser consultada pelo usuário.
ALTER DEFAULT PRIVILEGES
IN SCHEMA public
GRANT SELECT ON TABLES TO usuario;
O usuário terá acesso total ao banco?
Não.
As permissões concedidas nesse procedimento limitam o acesso a:
-
Conexão ao banco;
-
Schema public;
-
Consultas (SELECT).
O usuário não poderá:
-
Inserir registros (
INSERT); -
Alterar registros (
UPDATE); -
Excluir registros (
DELETE); -
Criar tabelas;
-
Alterar estruturas do banco.
Atenção para outros schemas
As permissões acima são válidas apenas para:
public
Caso o banco possua outros schemas, será necessário conceder permissões manualmente para cada um deles.
Resumo das permissões
| Permissão | Acesso |
|---|---|
| CONNECT | ✔ |
| USAGE SCHEMA | ✔ |
| SELECT | ✔ |
| INSERT | ✖ |
| UPDATE | ✖ |
| DELETE | ✖ |
| CREATE | ✖ |
| DROP | ✖ |
Resultado esperado
Após executar os comandos:
-
O usuário conseguirá conectar ao banco gestores;
-
Poderá consultar os dados das tabelas autorizadas;
-
Não terá permissão para alterar informações do sistema;
-
Novas tabelas criadas no schema public também ficarão disponíveis para consulta automaticamente.