Em 11 de dezembro de 2013 00:17, Matheus de Oliveira <
[email protected]> escreveu:

>
> 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;
>

Colaborando com a resposta, há também a possibilidade de criação de roles
(grupos sem a opção de login) para ter estas permissões e incluir os
usuários desejados, assim, quando houver um novo usuário, não será
necessário conceder todas as permissões de consulta para este novo usuário,
bastará incluí-lo no grupo existente.

[]'s


>
>
>
>>  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
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a