Berikan penggunaan/pilih ke satu tabel
Jika Anda hanya memberikan CONNECT ke database, pengguna dapat terhubung tetapi tidak memiliki hak istimewa lainnya. Anda harus memberikan USAGE pada ruang nama (skema) dan SELECT pada tabel dan tampilan satu per satu seperti:
GRANT CONNECT ON DATABASE mydb TO xxx;
-- This assumes you're actually connected to mydb..
GRANT USAGE ON SCHEMA public TO xxx;
GRANT SELECT ON mytable TO xxx;
Beberapa tabel/tampilan (PostgreSQL 9.0+)
Di PostgreSQL versi terbaru, Anda dapat memberikan izin pada semua tabel/tampilan/dll dalam skema menggunakan satu perintah daripada harus mengetiknya satu per satu:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;
Ini hanya mempengaruhi tabel yang telah dibuat. Lebih hebatnya lagi, Anda dapat secara otomatis menetapkan peran default ke objek baru di masa mendatang:
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO xxx;
Perhatikan bahwa secara default ini hanya akan memengaruhi objek (tabel) yang dibuat oleh pengguna yang mengeluarkan perintah ini:meskipun perintah ini juga dapat diatur pada peran apa pun yang menjadi anggota pengguna penerbit. Namun, Anda tidak mengambil hak istimewa default untuk semua peran yang Anda ikuti saat membuat objek baru... jadi masih ada beberapa masalah. Jika Anda mengadopsi pendekatan bahwa database memiliki peran pemilik, dan perubahan skema dilakukan sebagai peran pemilik, maka Anda harus menetapkan hak default untuk memiliki peran tersebut. IMHO ini semua agak membingungkan dan Anda mungkin perlu bereksperimen untuk menghasilkan alur kerja yang fungsional.
Beberapa tabel/tampilan (Versi PostgreSQL sebelum 9.0)
Untuk menghindari kesalahan dalam perubahan multi-tabel yang panjang, disarankan untuk menggunakan proses 'otomatis' berikut untuk menghasilkan GRANT SELECT
yang diperlukan ke setiap tabel/tampilan:
SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;'
FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind IN ('r', 'v', 'S');
Ini akan menampilkan perintah GRANT yang relevan ke GRANT SELECT pada semua tabel, tampilan, dan urutan di depan umum, untuk cinta salin-n-tempel. Secara alami, ini hanya akan diterapkan pada tabel yang telah dibuat.