2017-01-24 3 views
1

Betrachten Ich habe zwei Admin-Benutzer in meiner Postgres-Datenbank admin1 und admin2. Jetzt melde ich mich mit admin1 an und erstelle einen neuen Benutzer temp. Ich kann diesen Benutzer mit dem Login Admin1 löschen, aber wenn ich versuche, es mit Admin2 zu löschen, gibt es mir den Fehler 'Rolle "Temp" kann nicht gelöscht werden, weil einige Objekte davon abhängen'.Drop Postgresql Benutzer von einem anderen Benutzer erstellt

erstellen Admin-Benutzer-Anweisungen sind:

create user admin2 with password '...admin2'; 
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin2 WITH grant option; 
ALTER USER admin2 CREATEROLE; 

Gibt es eine andere Erlaubnis, die ich admin2 geben müssen, so dass ich Temp löschen kann?

erstellen temporäre Benutzer-Anweisungen sind:

create user temp with password '... temp'; 
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO temp; 

Mein Drop Temp Benutzer-Anweisungen sind:

REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM temp; 
REVOKE ALL ON DATABASE database FROM temp; 
DROP USER temp; 
+0

Server-Version, bitte –

Antwort

0

CREATEROLE enought ist in der Lage sein, Rollen zu löschen. Aber alle Abhängigkeiten müssen entfernt werden. Die Fehlermeldung zeigt an, dass noch Abhängigkeiten bestehen.

Gemäß manual können Sie Abhängigkeiten entweder mit REASSIGN OWNED oder DROP OWNED entfernen. Zum Beispiel

REASSIGN OWNED BY temp TO admin2; 
+0

Wenn das der Fall ist, dann, warum es gelöscht wird erhalten, wenn ich es löschen, den Benutzer mit (admin1), die den Benutzer erstellt, ohne durch neu zuzuweisen im Besitz zu haben. – Joy

+0

Guter Punkt, nicht sicher, bist du sicher, dass der Widerruf korrekt funktioniert, wenn er als admin2 ausgeführt wird? – Eelke

Verwandte Themen