Eu quero saber quais concessões, no mínimo, são necessárias para selecionar/inserir/atualizar/excluir de uma tabela.
Digamos que eu tenha uma tabela t
no esquema s
no banco de dados d
e uma função r
.
Começo concedendo as permissões necessárias mencionadas acima:
grant select, insert, update, delete on table s.t to r;
O que mais eu preciso? O USAGE
esquema s
e CONNECT
o banco de dados são absolutamente necessários, mas também suficientes?
grant connect on database d to r;
grant usage on schema s to r;
Não existe uma lista simples de concessões necessárias e suficientes, pois existem vários caminhos que podem ser usados. CONNECT no banco de dados e USAGE em um esquema geralmente são feitos por meio de "PUBLIC" em vez de funções individuais, por exemplo.
Bancos de dados recém-criados terão o privilégio CONNECT para PUBLIC por padrão, portanto, a menos que você tenha feito o possível para removê-lo, nenhuma concessão explícita é necessária nesse caso. Quando você cria um banco de dados, ele vem com um esquema chamado "público" que também tem USAGE concedido a PUBLIC, mas esquemas que você cria manualmente não vêm com esse privilégio.