Saya ingin memberi pengguna semua izin pada database tanpa menjadikannya admin. Alasan mengapa saya ingin melakukan itu adalah bahwa saat ini DEV dan PROD adalah DB yang berbeda pada kluster yang sama sehingga saya tidak ingin pengguna dapat mengubah objek produksi tetapi harus dapat mengubah objek pada DEV.
Saya mencoba:
grant ALL on database MY_DB to group MY_GROUP;
tapi sepertinya tidak memberi izin.
Kemudian saya mencoba:
grant all privileges on schema MY_SCHEMA to group MY_GROUP;
dan tampaknya memberi saya izin untuk membuat objek tetapi tidak meminta \ menghapus objek pada skema yang milik pengguna lain
Saya dapat melanjutkan dengan memberikan izin USAGE kepada pengguna di MY_SCHEMA tetapi kemudian akan mengeluh tentang tidak memiliki izin di atas meja ...
Jadi saya kira pertanyaan saya adalah: apakah ada cara mudah memberikan semua izin kepada pengguna pada DB?
Saya sedang mengerjakan PostgreSQL 8.1.23.
sumber
ON DATABASE
terdengar perkasa, tapi itu tidak banyak membantu. Itu baru permulaan. Itu tidak memberikan hak istimewa pada benda yang terkandung.Di PostgreSQL 9.0+ Anda akan melakukan hal berikut:
Jika Anda ingin mengaktifkan ini untuk hubungan yang baru dibuat juga, maka atur izin default:
Namun, melihat bahwa Anda menggunakan 8.1 Anda harus kode sendiri:
Ini akan mengatur hak istimewa pada semua relasi: tabel, tampilan, indeks, urutan, dll. Jika Anda ingin membatasi itu, filter pada
pg_class.relkind
. Lihat dokumen pg_class untuk detailnya.Anda harus menjalankan fungsi ini sebagai superuser dan teratur seperti yang dibutuhkan aplikasi Anda. Pilihannya adalah mengemas ini dalam pekerjaan cron yang dijalankan setiap hari atau setiap jam.
sumber
Saya melakukan yang berikut ini untuk menambahkan peran 'eSumit' pada database PostgreSQL 9.4.15 dan memberikan semua izin untuk peran ini:
Juga memeriksa entri pg_table melalui:
pilih * dari pg_roles;
Bidikan snapshot basis data:
sumber