PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como conceder todos os privilégios em visualizações para usuários arbitrários


O motivo é que você precisa de privilégios adicionais para acessar uma visualização ou tabela. Os privilégios no banco de dados não cobrem o acesso a todos os objetos nele.

É diferente com as funções:EXECUTE privilégio é concedido a public por padrão. Mas a função é executada com os privilégios do usuário atual. Você pode estar interessado no SECURITY DEFINER modificador para CREATE FUNCTION . Mas normalmente é suficiente conceder SELECT nas mesas envolvidas.

Por documentação sobre privilégios padrão:

Dependendo do tipo de objeto, os privilégios padrão iniciais podem incluir a concessão de alguns privilégios para PUBLIC . O padrão é sem publicaccess para tabelas, colunas, esquemas e tablespaces; CONNECT privilégio e TEMP privilégio de criação de tabelas para bancos de dados; EXECUTE privilégio para funções; e USAGE privilégio para as línguas.

Você pode estar interessado neste comando DDL (requer Postgres 9.0 ou mais tarde):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Enquanto estiver conectado ao banco de dados em questão, é claro (veja o comentário de @marcel abaixo), e como usuário com privilégios suficientes. Você também pode estar interessado na configuração DEFAULT PRIVILEGES :
  • Conceder tudo em um esquema específico no banco de dados para uma função de grupo no PostgreSQL

Resposta mais detalhada sobre como gerenciar privilégios:
  • Como gerenciar PRIVILÉGIOS PADRÃO para USUÁRIOS em um DATABASE versus SCHEMA?

O pgAdmin possui um recurso para operações em massa mais sofisticadas:



Ou você pode consultar os catálogos do sistema para criar instruções DDL para concessão/revogação em massa...