2013/12/10 Renato Sousa <[email protected]>

> Boa noite amigos da lista,
>
>
Boa noite.



> Analisei a documentação do postgres para criar um usuario com permissão de
> SELECT no banco.
> Crei o usuário através do comando:
>
> CREATE USER user1 WITH PASSWORD 'xxxxx';
>
> Após criar o usuário, conectei novamente ao BD para listar as tabelas.
>  São mais de 40 tabelas e pelo que entendi eu devo dar permissão de select
> a cada uma delas utilizando a sintaxe :
>
> GRANT SELECT ON nomedatabela to user1;
>
> Minhas dúvidas são as seguintes:
> Devo conceder a permissão select a cada tabela mesmo ou posso fazer de uma
> fez a todas as tabelas ?
>

Além da permissão de SELECT você deve dar permissão de USAGE no schema e de
CONNECT no banco de dados. Por padrão o esquema public já vem com permissão
de USAGE para todos, assim como os bancos já possuem de CONNECT, mas é uma
prática comum revogar essas permissões e passá-las somente àqueles que
necessitam.

Na versão 8.4 não há jeito, você terá que fazer uma tabela por vez. Pode
até fazer um SELECT na pg_class para gerar esse script:

    SELECT 'GRANT SELECT ON ' ||
quote_ident(n.nspname)||'.'||quote_ident(r.relname)||' TO user1;'
    FROM pg_class r JOIN pg_namespace n ON r.relnamespace = n.oid
    WHERE r.relkind = 'r' AND n.nspname = '<nome do schema>';

Já na versão 9.0 em diante, você pode fazer para todas as tabelas de um
dado esquema:

    GRANT SELECT ON ALL TABLES IN SCHEMA <nome do schema> TO user1;

Mas, ao criar uma nova tabela, essa permissão não é repassada. Para isso
você pode também usar o comando ALTER DEFAULT PRIVILEGES:

    ALTER DEFAULT PRIVILEGES IN SCHEMA <nome do schema> GRANT SELECT ON
TABLES TO user1;



>  Com a permissão SELECT o usuário é capaz de utilizar algum programa
> interativo para elaborar frases SQL no BD ?
>

Não entendi muito bem o que quis dizer. Mas se esse "programa interativo"
gerar somente consultas (SELECTs), a resposta é sim.



> É preciso alterar o arquivo  pg_hba.conf para esse tipo de acesso ?
>
>
Bem, o pg_hba.conf tem que liberar para que o usuário seja capaz de
conectar-se ao banco. Não tem nada relacionado a quais permissões ele terá.


> PS: a versão do postgresql é 8.4
>
>
Atualize assim que puder e seja beeeeemmm mais feliz... =D



> Abraços e muito obrigado,
>
>
Abraços.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a