Alcune volte fa ho creato un utente PostgreSQL chiamato user1 (PostgreSQL 9.4.9).
Voglio eliminare questo utente. Quindi prima revoco tutte le autorizzazioni su tabelle, sequenze, funzioni, privilegi e proprietà predefiniti:
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;
REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;
REASSIGN OWNED BY user1 TO postgres;
Tuttavia sembra che un oggetto rimanga collegato a questo utente in 2 database:
postgres=# DROP ROLE user1;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: 1 object in database db1
1 object in database db2
Sembra anche essere una funzione:
postgres=# \c db1
You are now connected to database "db1" as user "postgres".
db1=# DROP ROLE user1;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: privileges for function text(boolean)
1 object in database db2
Ma non riesco a determinare quale oggetto è di proprietà o correlato a user1.
Se non pg_dump -s db1 | grep user1
ottengo alcun risultato! Potrebbe essere un oggetto globale?
Come posso identificare l'oggetto mancante?
Ho eseguito i comandi in ciascun database (db1 e db2). Non voglio rilasciare oggetti di proprietà user1
, voglio solo riassegnare o rimuovere le sovvenzioni per questo utente.