Odpowiedzi:
ALTER DATABASE name OWNER TO new_owner;
Zobacz wpis podręcznika PostgreSQL na to więcej szczegółów.
ERROR: must be member of role ...
= NIE DZIAŁA Z RDS
Odpowiedź Franka Heikensa zaktualizuje tylko własność bazy danych. Często chcesz także zaktualizować własność zawartych obiektów (w tym tabel). Począwszy od wersji Postgres 8.2 dostępna jest opcja REASSIGN OWNED, aby uprościć to zadanie.
WAŻNA EDYCJA!
Nigdy nie używaj REASSIGN OWNED
gdy pierwotna rola jest postgres
, może to uszkodzić całą instancję DB. Polecenie zaktualizuje wszystkie obiekty o nowego właściciela, w tym zasoby systemowe (postgres0, postgres1 itp.)
Najpierw połącz się z administracyjną bazą danych i zaktualizuj własność bazy danych:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Jest to globalny odpowiednik ALTER DATABASE
polecenia podanego w odpowiedzi Franka, ale zamiast aktualizować konkretną bazę danych, zmienia ona własność wszystkich baz danych należących do „old_name”.
Następnym krokiem jest aktualizacja własności tabel dla każdej bazy danych:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Musi to zostać wykonane na każdym DB należącym do „old_name”. Polecenie zaktualizuje własność wszystkich tabel w bazie danych.
postgres
sam ... Nauczył się tego na własnej skórze.
REASSIGN OWNED
(zazwyczaj dlatego, że twój właściciel jest postgres
), zobacz fragmenty w stackoverflow.com/a/2686185/1839209 .