Crie um novo usuário somente leitura no postgres

9

Eu gostaria de criar um novo usuário em um postgresqlbanco de dados existente em uma máquina Ubuntu. Desejo conceder a este usuário um acesso somente leitura a todas as tabelas.

Como eu faço isso? Também preciso criar um novo usuário no Ubuntu?

Obrigado,

Udi

Adam Matan
fonte

Respostas:

20

Referência retirada deste artigo!

Script para criar usuário somente leitura:

CREATE ROLE Read_Only_User WITH LOGIN PASSWORD 'Test1234' 
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

Atribua permissão a este usuário somente leitura:

GRANT CONNECT ON DATABASE YourDatabaseName TO Read_Only_User;
GRANT USAGE ON SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;
Anvesh
fonte
Impressionante! Uma resposta nova e relevante após mais de 6 anos.
Adam Matan
Vale a pena. Este foi o link principal para mim ao procurar "criar usuário somente leitura no Postgres". O artigo principal com um exemplo relevante é uma vitória no meu livro.
Audrius 28/11
3

Não há necessidade de criar um novo usuário no sistema operacional. Basta emitir:

CRIAR USUÁRIO newusername

no psql (ou pgadmin, ou qualquer outra ferramenta que você preferir) e você terá um novo usuário. O acesso que esse usuário tem depende do que suas tabelas estão configuradas. Porém, por padrão, ele não terá permissões em nenhuma tabela; portanto, você terá que CONCEDER isso. Se você já concedeu permissões ao grupo público, o usuário terá essas permissões desde o início.

Magnus Hagander
fonte