Pendahuluan
PostgreSQL atau biasa disebut postgres adalah Object-Relational Database Management System (ORDBMS). Ia termasuk database sistem yang sangat populer, sudah teruji, dan cocok digunakan untuk menyelesaikan permasalahan penyimpanan informasi baik untuk projek skala besar mau pun projek skala kecil. Selain itu, PostgreSQL bisa menangani concurrent users yang sangat besar.
PostgreSQL juga open source, sehingga anda bisa menggunakannya secara gratis baik di windows, linux, mau pun MacOs.
Pada tulisan kali ini, jagongoding akan mendemonstrasikan langkah-langkah untuk menginstall PostgreSQL versi 11 di Ubuntu.
Cara Install PostgreSQL
1. Update Repository
Secara default repositori resmi Ubuntu sudah menyediakan paket instalasi postgres. Sehingga kita bisa dengan mudah untuk memasangnya menggunakan apt
. Langkah yang pertama kita lakukan adalah mengupdate repository. Agar kita bisa mendapatkan versi postgresql yang terbaru.
sudo apt update
2. Install PostgreSQL
Langkah selanjutnya adalah memasang postgresql dengan apt. Perintahnya adalah sebagai berikut:
sudo apt install postgresql postgresql-contrib
Cek apakah postgresql
sudah terinstall dengan baik.
psql --version

Setelah paket postgresql
dan postgresql-contrib
telah terinstall. Kita akan lanjutkan pembahasan tentang bagaimana cara kerja postgresql karena cara kerjanya mungkin sedikit berbeda dengan database sistem yang sering kita gunakan.
Install PHP Module untuk Postgresql
Sedikit tambahan, bagi yang menggunakan bahasa pemrograman PHP. Bisa menambahkan php module dengan menginstall paket php-pgsql
.
Secara umum di ubuntu kita bisa melakukannya dengan perintah berikut:
sudo apt install php-pgsql
Baca lebih lanjut tentang menginstall berbagai macam versi php di ubuntu.
Cara Menggunakan PostgreSQL di Ubuntu
Konsep Roles Pada PostgreSQL
Secara default PostgreSQL menggunakan satu konsep yang dinamakan “role” untuk menangani autentikasi dan autorisasi. Dalam satu sisi cara kerjanya mirip dengan manajemen akun yang digunakan pada Unix-system, akan tetapi postgres tidak membedakan antara users dan groups dan justru mengenelarisir keduanya dengan istilah “role”.
Atau intinya: kalau kita ingin login ke postgresql, kita harus memiliki akun (role) terlebih dahulu.
Postgresql secara default menggunakan indent authentication. Yaitu dia mengasosiasikan antara user yang tersedia pada Unix/Linux kita dengan role yang tersedia pada postgres. Artinya jika ada satu user linux yang juga tersedia di sistem postgres, maka user tersebut bisa langsung login sebagai role tersebut.
Oiya, postgresql secara default telah membuatkan kita user dan role baru bernama postgres. Dan user tersebut memiliki super hak akses sehingga anda bisa melakukan apa pun untuk database anda dengan menggunakan user bernama postgres.
Mengaktifkan Bash Dengan User Linux Bernama “postgres”
Untuk mengaktifkan bash kita dengan user postgres, silakan jalankan perintah berikut:
sudo -iu postgres
Login PostgreSQL dengan User Yang Sedang Aktif
Sekarang karena linux anda atau bash anda sedang menggunakan user “postgres” yang mana itu juga tersedia sebagai role pada postgresql, anda bisa langsung login atau mengakses postgresql secara langsung hanya dengan menjalankan perintah berikut:
psql
Untuk keluar dari menu interaktif psql, ketik perintah \q
lalu tekan enter
.
\q

Atau anda juga bisa menuliskan perintah exit
lalu tekan enter
.
Login PostgreSQL Tanpa Harus Mengganti Akun
Dalam kasus saya, user default yang saya gunakan adalah ibnuzakariyya
(lihat screenshot di atas). Nah, saya ingin login ke postgresql sebagai role postgres
tapi tanpa harus switch akun terlebih dahulu.
Caranya mudah, kita bisa mengakses psql
secara langsung dengan mendefinisikan role yang kita inginkan sebagaimana berikut:
sudo -u postgres psql
Sebenarnya cara di atas masih sama dengan cara sebelumnya, hanya saja yang ini lebih singkat.
Membuat Role Baru
Banyak aplikasi atau sistem yang membutuhkan lebih dari satu role untuk mengakses database. Di sini kita akan coba mendemonstrasikan bagaimana cara membuat role baru pada postgresql.
Sebagaimana yang sudah disinggung sebelumnya bahwa kita memiliki role superadmin bernama postgres, dan memang hanya satu role itu saja yang kita miliki sekarang. Sehingga untuk membuat role baru pun kita harus melalui user postgres tersebut.
Switch akun menggunakan akun postgres.
sudo -iu postgres
Panggil perintah createuser
dengan flag --interactive
. Di sini saya mencontohkan dengan membuat user baru bernama ibnuzakariyya
.
createuser --interactive

Kita hanya baru saja membuat akun baru. Akan tetapi akun tersebut belum memiliki database. Di langkah selanjutnya kita akan membuat database baru.
Membuat Database Baru
Dalam sistem authentikasi default postgresql, setiap role yang ada diasumsikan memiliki database dengan nama yang sama. Sehingga ketika login, database dengan nama yang sama tersebut akan otomatis aktif.
Lalu bagaimana jika user atau role yang kita gunakan untuk login tapi databasenya tidak ada? Hasilnya akan error seperti di bawah ini.

Agar tidak terjadi error seperti di atas, kita harus membuat terlebih dahulu database dengan nama yang sama dengan nama role.
Oke, pastikan bash linux kita aktif dengan akun postgres.
Setelah itu buat database baru dengan nama role yang tadi sudah dibuat (dalam kasus saya adalah ibnuzakariyya
).
createdb ibnuzakariyya
Setelah berhasil membuat database baru. Anda bisa keluar ke user normal anda lalu ketik perintah psql
maka anda sudah bisa berhasil login dengan user normal tersebut.

Menghapus Role
Untuk menghapus role pastikan anda menggunakan role super admin yang memiliki akses tak terbatas. Role tersebut secara default adalah user dengan nama postgres. Sehingga anda harus login telebih dahulu dengan user tersebut.
sudo -iu postgres
Setelah login, anda jalankan perintah dropuser <nama-role>
untuk menghapus role. Sekalian juga hapus database yang bersangkutan dengan perintah dropdb <nama-db
.
dropuser ibnuzakariyya
dropdb ibnuzakariyya
Berinteraksi Dengan PSQL Client
Membuat Database
Kita bisa membuat database dengan menulis SQL berikut:
CREATE DATABASE db_pertama;
Pilih db_pertama
sebagai db aktif.
\c db_pertama;
Setelah itu kita coba membuat tabel baru dengan nama users
yang hanya memiliki satu kolom.
CREATE TABLE users (name varchar(30));

Untuk melihat list tabel yang ada pada db aktif, kita bisa menggunakan perintah \d
.
\d
Di sini terlihat bahwa ada satu table dengan nama users
, beserta beberapa info lainnya seperti schema
, type
, dan owner
.

Insert Users
Pada tabel users
yang sudah kita buat, kita coba insert dua row dengan SQL berikut:
INSERT INTO users VALUES ('Ibnu Jakaria'), ('Nurul Huda');

Setelah berhasil insert, kita coba lihat dengan melakukan query select.
SELECT * FROM users;
Maka jika muncul dua baris yang telah kita insert sebelumnya berarti sudah sukses.

Tambahan
Kita bisa membuka postgresql
dengan database client sesuka kita. Di sini saya menggunakan adminer
untuk membuka postgresql
. Anda bisa menggunakan database client yang lain semisal: pgAdmin
, DBeaver
, pgManage
dan lain sebagainya.

Semoga bermanfaat! :)