Anda menemukan singkatan untuk menyetel hak istimewa untuk semua yang ada tabel dalam skema yang diberikan. Manual menjelaskan:
(tetapi perhatikan bahwa
ALL TABLES
dianggap menyertakan tampilan dan tabel asing ).
Penekanan saya yang berani. serial
kolom diimplementasikan dengan nextval()
pada urutan sebagai kolom default dan, mengutip manual:
Untuk urutan, hak istimewa ini memungkinkan penggunaan
currval
dannextval
fungsi.
Jadi jika ada serial
kolom, Anda juga ingin memberikan USAGE
(atau ALL PRIVILEGES
) pada urutan
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Catatan:kolom identitas di Postgres 10 atau yang lebih baru menggunakan urutan implisit yang tidak memerlukan hak istimewa tambahan. (Pertimbangkan untuk meningkatkan serial
kolom.)
Bagaimana dengan baru objek?
Anda juga akan tertarik dengan DEFAULT PRIVILEGES
untuk pengguna atau skema:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
Ini menetapkan hak istimewa untuk objek yang dibuat di masa mendatang secara otomatis - tetapi tidak untuk objek yang sudah ada sebelumnya.
Hak istimewa default hanya diterapkan ke objek yang dibuat oleh pengguna yang ditargetkan (FOR ROLE my_creating_role
). Jika klausa itu dihilangkan, defaultnya adalah pengguna saat ini yang menjalankan ALTER DEFAULT PRIVILEGES
. Lebih jelasnya:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Perhatikan juga bahwa semua versi pgAdmin III memiliki bug halus dan tampilan hak istimewa default di panel SQL, meskipun tidak berlaku untuk peran saat ini. Pastikan untuk menyesuaikan FOR ROLE
klausa secara manual saat menyalin skrip SQL.