Jak zmienić właściciela bazy danych PostgreSql?


205

Muszę zmienić właściciela bazy danych PostgreSql.

Jak zmienić właściciela bazy danych PostgreSql w phppgadmin?

Odpowiedzi:


345
ALTER DATABASE name OWNER TO new_owner;

Zobacz wpis podręcznika PostgreSQL na to więcej szczegółów.


3
Dla kompletności tutaj znajduje się część podręcznika, która to dokumentuje: postgresql.org/docs/current/static/sql-alterdatabase.html
a_horse_w_na_nazwie

17
@ mArtinko5MB: To niemożliwe, ALTER nie DROP bazy danych.
Frank Heikens

17
@ mArtinko5MB: Również niemożliwe, ALTER TABLE nie opróżnia stołu. Pokaż nam swój SQL, coś jest źle uszkodzone w twoich instrukcjach.
Frank Heikens

18
Uwaga: wszystkie tabele i sekwencje w bazie danych nadal będą przypisane pierwotnemu właścicielowi.
Cerin,

2
ERROR: must be member of role ...= NIE DZIAŁA Z RDS
StartupGuy

49

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.


7
Miły! ... chyba że właściciel jest postgressam ... Nauczył się tego na własnej skórze.
Chris

1
Problem polega na tym, że nie zmienia właściciela jednej bazy danych, ale wszędzie zastępuje właściciela nową.
Michael003

Powyższe WŁASNE PRZEKŁADANIE spowoduje zmianę całej bazy danych (jeśli istnieje wiele baz danych) w tej samej instancji na nową rolę.
varun7447

Alternatywą dla REASSIGN OWNED(zazwyczaj dlatego, że twój właściciel jest postgres), zobacz fragmenty w stackoverflow.com/a/2686185/1839209 .
Michael Herrmann
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.