Ich versuche effizient drop role
von einer Postgres-Instanz, und läuft in einige Probleme. Ich suche nach SQL zu drop role
, damit ich aufhören kann, Fehlermeldungen zu lesen, und das nicht manuell tun muss.Dropgres Rolle und Datenbank nach vielen Zuschüssen
Im Setup in arbeite ich, bekommen alle Rollen eine eigene Datenbank mit dem gleichen Namen:
CREATE ROLE alpha_user;
CREATE DATABASE alpha_user;
ALTER DATABASE alpha_user OWNER TO alpha_user;
oft Benutzer Zugriff auf Schemata in ihrer Datenbank zu anderen Benutzern gewähren:
-- alpha_user logs in to the alpha_user database
GRANT USAGE ON SCHEMA myschema TO beta_user;
Wenn ich versuche, beta_user
fallen zu lassen, geschieht dies:
-- log in as superuser
DROP ROLE beta_user;
-- ERROR: role "beta_user" cannot be dropped because some objects depend on it
-- DETAIL: N objects in database alpha_user
ich verbinden kann die alpha_user
Datenbank und fallen OWNED BY
, aber dies ist ineffizient:
-- log in as superuser
\c alpha_user;
DROP OWNED BY beta_user CASCADE;
DROP beta_user;
-- success
Benutzer Zugriff auf eine beliebige Anzahl von Datenbanken gewähren kann, und es gibt viele Anwender. Gibt es eine Anweisung (oder eine Reihe von Anweisungen), die ein Superuser für einen Benutzer in allen Datenbanken, für die dem Benutzer Zugriff erteilt wurde, auf DROP OWNED BY
ausführen kann?
Was ist Ihre Version von PostgreSQL und was ist Ihr Betriebssystem? –
Postgres 9.4 und Ubuntu 14.04. Warum sollte Betriebssystem wichtig sein? – alacarter
Sie können die Hilfe der Befehlszeilenprogramme verwenden, die Linux zur Verfügung stellt. –