Eu gostaria de dar a um usuário todas as permissões em um banco de dados sem torná-lo um administrador. A razão pela qual eu quero fazer isso é que, no momento, o DEV e o PROD são DBs diferentes no mesmo cluster, por isso não quero que um usuário possa alterar objetos de produção, mas deve poder alterar objetos no DEV.
Eu tentei:
grant ALL on database MY_DB to group MY_GROUP;
mas parece não dar nenhuma permissão.
Então eu tentei:
grant all privileges on schema MY_SCHEMA to group MY_GROUP;
e parece me dar permissão para criar objetos, mas não para consultar \ excluir objetos nesse esquema que pertencem a outros usuários
Eu poderia continuar dando permissão USAGE ao usuário em MY_SCHEMA, mas ele reclamaria por não ter permissões na tabela ...
Então, acho que minha pergunta é: existe alguma maneira fácil de conceder todas as permissões para um usuário em um banco de dados?
Estou trabalhando no PostgreSQL 8.1.23.
fonte
ON DATABASE
parece poderosa, mas não faz muito. É apenas um começo. Não concede privilégios em objetos contidos.No PostgreSQL 9.0+, você faria o seguinte:
Se você deseja habilitar isso também para relações recém-criadas, defina as permissões padrão:
No entanto, como você usa o 8.1, você deve codificá-lo:
Isso definirá os privilégios em todas as relações: tabelas, visualizações, índices, sequências, etc. Se você quiser restringir isso, filtre
pg_class.relkind
. Veja os documentos pg_class para detalhes.Você deve executar esta função como superusuário e tão regular quanto seu aplicativo exigir. Uma opção seria empacotar isso em um trabalho cron que é executado todos os dias ou a cada hora.
fonte
Fiz o seguinte para adicionar uma função 'eSumit' no banco de dados PostgreSQL 9.4.15 e fornecer toda a permissão para essa função:
Também verificou as empresas pg_table através de:
selecione * em pg_roles;
Instantâneo de consultas ao banco de dados:
fonte