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.
<pre>CREATE USER usuario WITH PASSWORD 'gestores@2023';
pre>
3. Conceder acesso ao banco
Permite que o usuário se conecte ao banco de dados.
<pre>GRANT CONNECT ON DATABASE gestores TO usuario;
pre>
4. Conceder acesso ao schema
Permite acesso ao schema public.
<pre>GRANT USAGE ON SCHEMA public TO usuario;
pre>
5. Conceder leitura das tabelas existentes
Permite consultar todas as tabelas já existentes no schema.
<pre>GRANT SELECT ON ALL TABLES IN SCHEMA public TO usuario;
pre>
6. Conceder acesso às sequências (opcional)
Caso seja necessário consultar informações relacionadas às sequências do banco:
<pre>GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO usuario;
pre>
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.
<pre>ALTER DEFAULT PRIVILEGES
IN SCHEMA public
GRANT SELECT ON TABLES TO usuario;
pre>
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:
<pre>public
pre>
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.