User dan Role di Postgresql

Pengertian role di postgresql

Roles ini berbeda dengan pengertian role  di sistem operasi Unix. Disini tidak ada pembedaan antara users dan groups. Roles dapat diubah-ubah, dan lebih flexible. Misalnya role dapat menjadi anggota dari role yang lain. Role juga dapat memiliki objek dan access control terhadap object2 tersebut. Secara default setiap user memiliki role sendiri.

Melihat user yang sudah ada :

postgres=# SELECT rolname FROM pg_roles;
 rolname  
----------
 postgres
(1 row)

Sebuah role adalah entitas yang dapat memiliki objek database, dan memiliki wewenang terhadap database. Role juga dapat dianggap seperti sebuah “user”, sebuah “group” atau keduanya sekaligus tergantung bagaimana menggunakannya.

Membuat user baru artinya sama dengan membuat role baru :

postgres=# CREATE ROLE admin;
CREATE ROLE
postgres=# SELECT rolname FROM pg_roles;
 rolname  
----------
 postgres
 admin
(2 rows)

Sekarang terlihat sudah ada 2 buah user/role : postgres dan admin.

Memberikan password pada user/role :

postgres=# ALTER ROLE admin WITH PASSWORD 'adminpassword';
ALTER ROLE

PostgreSQL remote connection

This arcticle was writen based PostgreSQL version 10.10 and running on Ubuntu 18.04

Configuring postgresql.conf

Find postgresql.conf

$ find / -name "postgresql.conf"
/usr/lib/tmpfiles.d/postgresql.conf
/etc/postgresql/10/main/postgresql.conf

Open file /etc/postgresql/10/main/postgresql.conf and replace line

listen_addresses = 'localhost'

with

listen_addresses = '*'

Configuring pg_hba.conf

Open file /etc/postgresql/10/main/pg_hba.conf and add following entry at the very end

host    all             all     0.0.0.0/0                    md5
host    all             all     ::/0                         md5

Do not get confused by “md5” option mentioned above. All it means is that a password needs to be provided. If you want client to allow collection without providing any password then change “md5” to “trust” and that will allow connection unconditionally.

Restart postgresql server.

Search Path di PostgreSQL

Search Path (search_path) adalah daftar schema yang menjadi patokan bagi PostgreSQL untuk mencari objek yang digunakan, apakah itu table, view, dan sebagainya. Urutan daftar ini juga akan menentukan prioritas pencarian. Untuk menampilkan current search path :

#show search_path;
ossystem=# show search_path;
           search_path           
---------------------------------
 sys, public, helpdesk, hrd, sym
(1 row)

Untuk membentuk search_path kita mengunakan statement SET, contoh  :

SET search_path TO my_schema, public;