Bagaimana cara mengubah pemilik basis data PostgreSql?

205

Saya perlu mengubah pemilik basis data PostgreSql.

Bagaimana cara mengubah pemilik database PostgreSql di phppgadmin?

Jayashri
sumber

Jawaban:

345
ALTER DATABASE name OWNER TO new_owner;

Lihat entri manual Postgresql tentang ini untuk lebih jelasnya.

Frank Heikens
sumber
3
Untuk kelengkapan di sini adalah bagian dari manual yang mendokumentasikan ini: postgresql.org/docs/current/static/sql-alterdatabase.html
a_horse_with_no_name
17
@ mArtinko5MB: Itu tidak mungkin, ALTER tidak DROP basis data.
Frank Heikens
17
@ mArtinko5MB: Juga tidak mungkin, ALTER TABLE tidak DROP tabel. Tunjukkan kami SQL Anda, ada sesuatu yang rusak parah dalam pernyataan Anda.
Frank Heikens
18
Catatan, semua tabel dan urutan di dalam basis data akan tetap ditugaskan ke pemilik asli.
Cerin
2
ERROR: must be member of role ...= JANGAN BEKERJA DENGAN RDS
StartupGuy
49

Jawaban Frank Heikens hanya akan memperbarui kepemilikan basis data. Seringkali, Anda juga ingin memperbarui kepemilikan objek yang ada (termasuk tabel). Dimulai dengan Postgres 8.2, REASSIGN OWNED tersedia untuk menyederhanakan tugas ini.

EDIT PENTING!

Jangan pernah gunakan REASSIGN OWNEDketika peran aslinya postgres, ini bisa merusak seluruh instance DB Anda. Perintah akan memperbarui semua objek dengan pemilik baru, termasuk sumber daya sistem (postgres0, postgres1, dll.)


Pertama, sambungkan ke database admin dan perbarui kepemilikan DB:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

Ini adalah setara global ALTER DATABASEperintah yang diberikan dalam jawaban Frank, tetapi alih-alih memperbarui DB tertentu, itu mengubah kepemilikan semua DB yang dimiliki oleh 'old_name'.

Langkah selanjutnya adalah memperbarui kepemilikan tabel untuk setiap database:

psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;

Ini harus dilakukan pada setiap DB yang dimiliki oleh 'old_name'. Perintah akan memperbarui kepemilikan semua tabel di DB.

Antwane
sumber
7
Bagus! ... kecuali pemiliknya postgres, dirinya sendiri ... Mempelajari itu dengan cara yang sulit.
Chris
1
Masalahnya adalah ia tidak mengubah pemilik satu basis data, tetapi ia menggantikan pemilik di mana-mana dengan yang baru.
Michael003
REASSIGN OWNED di atas akan mengubah semua database (jika ada beberapa database) dalam contoh yang sama dengan peran baru.
varun7447
Untuk alternatif REASSIGN OWNED(biasanya karena pemiliknya postgres), lihat snippet di stackoverflow.com/a/2686185/1839209 .
Michael Herrmann