Bagaimana cara mengubah pemilik basis data PostgreSql?


205

Saya perlu mengubah pemilik basis data PostgreSql.

Bagaimana cara mengubah pemilik database PostgreSql di phppgadmin?

Jawaban:


345
ALTER DATABASE name OWNER TO new_owner;

Lihat entri manual Postgresql tentang ini untuk lebih jelasnya.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.