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.