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.

Screenshot from 2019-02-18 15-38-05.png

Semoga bermanfaat! :)