Tutorial membuat user dan group read-only di PostgreSQL. Kenapa harus membuat group/role? Agar manajemennya lebih mudah dan rapi. Misalnya ingin membuat role dengan privileges hanya SELECT kemudian SELECT, UPDATE dan seterusnya. 
Membuat group/role
Pertama kita buat role yang akan kita beri hak akses istimewa, dalam tutorial ini adalah read-only atau SELECT saja, user hanya bisa membaca data table-table yang ada di database tapi tidak bisa INSERT, UPDATE maupun melakukan function lainnya.
Contoh di bawah ini kita buat nama role tim_baca
Sesuaikan nama databasenya ya!
CREATE ROLE tim_baca;
GRANT USAGE ON SCHEMA public TO tim_baca;
GRANT CONNECT ON DATABASE nama_databasenya TO tim_baca;
\connect nama_databasenya;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO tim_baca;Agar setelah membuat table baru di database bisa terbaca oleh group tim_baca 
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO tim_baca;Kunci keberhasilan  memberi hak akses SELECT ke role tim_baca adalah harus connect ke nama database (\connect nama_databasenya)
Jadi misalnya kita membuat nama database baru berarti kita harus konek ke database baru tersebut kemudian kita GRANT lagi ke role tim_baca. Jelas ya? karena dari pengalaman saya melewatkan langkah ini yang membuat stuck hinga beberapa jam.
Membuat user
Sekarang membuat user dan kita masukkan ke role tim_baca
CREATE USER omar WITH PASSWORD 'kata_sandi123';
GRANT tim_baca TO omar;Uji coba
Sekarang waktunya test
psql -h ip-servernya -p 5432 -U omar -W nama_databasenya
\dt
select * from nama_table;Nah, selesai sudah.
Semoga bermanfaat.