Não consigo remover uma função de um banco de dados postgres. Executar a instrução DROP ROLE gera o seguinte erro:
DROP ROLE read_only;
SQL Error [2BP01]: ERROR: role "read_only" cannot be dropped because some objects depend on it
Detail: privileges for table orgs.client
Quando tento revogar esses privilégios das tabelas, a instrução REVOKE é bem-sucedida (sem erros):
REVOKE ALL PRIVILEGES ON TABLE orgs.client FROM read_only;
Mas então, se eu tentar descartar a função novamente, recebo o mesmo erro acima.
Não tenho ideia do porquê a declaração REVOKE não está funcionando como esperado. Ou talvez esteja funcionando, mas o problema é outro. Alguma ideia de como solucionar isso?
Saída de \z orgs.client
:
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------+-------+---------------------------------------------------------------------------------+-------------------+----------
orgs | client | table | "prisma-beta-gsa@REDACTED"=arwdDxt/"[email protected]" +| |
| | | REDACTED_dev=arwdDxt/"[email protected]" +| |
| | | landlord=a*r*w*d*D*x*t*/"[email protected]" +| |
| | | read_only=r/landlord +| |
| | | read_write=arwd/landlord +| |
| | | landlord=a*r*w*d*D*x*t*/costa +| |
| | | landlord=arwdDxt/landlord +| |
| | | REDACTED_read_only=r/"[email protected]" +| |
| | | REDACTED_read_write=arwdD/"[email protected]" +| |
| | | REDACTED_admin=arwdDxt/"[email protected]" | |
OBSERVAÇÃO: Estou trabalhando com um postgres 11 hospedado em uma instância do Google Cloud SQL. Por isso, não tenho acesso a uma função de superusuário. Tenho acesso ao postgres
usuário que é o mais próximo que você pode chegar de um superusuário ( docs ).
Como o privilégio foi concedido pelo usuário
landlord
, você também deve usar essa função para revogar o privilégio: