Antworten:
ALTER DATABASE name OWNER TO new_owner;
Siehe den Eintrag des Postgresql Handbuch auf diese für weitere Details.
ERROR: must be member of role ...
= ARBEITET NICHT MIT RDS
Die Antwort von Frank Heikens aktualisiert nur den Datenbankbesitz. Oft möchten Sie auch den Besitz von enthaltenen Objekten (einschließlich Tabellen) aktualisieren. Ab Postgres 8.2 steht REASSIGN OWNED zur Verfügung, um diese Aufgabe zu vereinfachen.
WICHTIGE BEARBEITUNG!
Verwenden Sie diese Option niemals, REASSIGN OWNED
wenn die ursprüngliche Rolle verwendet wird postgres
. Dies kann Ihre gesamte DB-Instanz beschädigen. Der Befehl aktualisiert alle Objekte mit einem neuen Eigentümer, einschließlich der Systemressourcen (postgres0, postgres1 usw.).
Stellen Sie zunächst eine Verbindung zur Admin-Datenbank her und aktualisieren Sie den DB-Besitz:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Dies ist ein globales Äquivalent zu dem ALTER DATABASE
in Franks Antwort angegebenen Befehl. Anstatt jedoch eine bestimmte Datenbank zu aktualisieren, wird der Besitz aller DBs geändert, deren Eigentümer 'old_name' ist.
Der nächste Schritt besteht darin, den Besitz der Tabellen für jede Datenbank zu aktualisieren:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Dies muss für jede Datenbank durchgeführt werden, die 'old_name' gehört. Der Befehl aktualisiert den Besitz aller Tabellen in der Datenbank.
postgres
selbst ist ... Das hat er auf die harte Tour gelernt.
REASSIGN OWNED
(normalerweise, weil Ihr Eigentümer es ist postgres
) finden Sie in den Snippets unter stackoverflow.com/a/2686185/1839209 .