Estou tendo um problema ao revogar privilégios que me impede de descartar usuários
select usename, acl.*
from pg_default_acl as acl join pg_user on usesysid = defacluser
where usename = 'user1';
me dá:
|usename|defacluser|defaclnamespace|defaclobjtype|defaclacl |
|-------|----------|---------------|-------------|----------------------|
|user1 |143 |0 |r |{user1=awdRxt/user1}|
Com uma view fornecida pela amazon( v_get_obj_priv_by_user
) eu executo isso para obter os esquemas/bancos de dados com permissões para este usuário:
select 'alter table '+schemaname+'.'+tablename+' owner to y;' from pg_tables where tableowner like 'user1';
select distinct 'revoke all on schema '+schemaname+' from user1;' from admin.v_get_obj_priv_by_user where usename like 'user1';
select distinct 'revoke all on all tables in schema '+schemaname+' from user1;' from admin.v_get_obj_priv_by_user where usename like 'user1'
Recebi estas 2 respostas de consultas anteriores
revoke all on schema xxx from user1;
revoke all on all tables in schema xxx from user1;
Executei-os, não tenho erros, mas as permissões ainda estão lá e as consultas usando v_get_obj_priv_by_user
continuam retornando os mesmos resultados.
Obviamente, quando mais tarde tento descartar o usuário, recebo este erro:
Erro SQL [2BP01]: ERRO: o usuário "usuário1" não pode ser eliminado porque alguns objetos dependem dele Detalhe: proprietário de privilégios padrão em novas relações pertencentes ao usuário usuário1
Alguma ideia do que eu poderia estar fazendo de errado? Obrigado!
Isso funcionou para mim: