Setting Up Database PostgreSQL pada Remote Server Ubuntu 20.04

13 Nov 2020

PostgreSQL merupakan sebuah relational database management system yang mampu menangani beban kerja yang berat dari suatu perangkat komputer ke sebuah data centre.

Pada Artikel ini saya akan memberikan tutorial singkat untuk membuat sebuah database yang menggunakan PostgreSQL bisa diakses secara remote.

Step 1: Install PostgreSQL

Langkah pertama untuk dapat menginstall PostgreSQL pada server tentu saja mengakses server, di langkah ini saya akan menggunakan metode SSH dengan menjalankan perintah berikut ini pada terminal:

ssh server_user@server_ip
  •     catatan: server_user adalah nama user pada server dan server_ip adalah IP address untuk server.

Kemudian jalankan command berikut ini:

sudo apt-get update

Ketika sudah selesai, install PostgreSQL dengan menjalankan:

sudo apt-get install postgresql postgresql-contrib

Dengan perintah di atas, maka Postgres akan diinstall dengan disertai dependencies yang diperlukan. Ketika sudah selesai diinstall, lakukan switch user ke user postgres agar bisa melakukan perintah Postgres dengan menjalankan:

sudo su - postgres

Akses PostgreSQL dengan menggunakan perintah:

psql

Setelah menjalakan command psql:

Step 2: Membuat User

Pada langkah ini, kita perlu membuat user yang digunakan untuk mengakses database secara remote dengan terlebih dahulu keluar dari Postgres Shell dengan cara:

\q

Dapat dilihat gambar di atas masih menunjukkan bahwa saat ini masih menggunakan user postgres, maka untuk melanjutkan membuat user bisa langsung menjalankan perintah berikut ini:

createuser --interactive --pwprompt

Dengan menggunakan command tersebut maka akan muncul tampilan seperti di atas untuk mengisi nama user, password, dan sebuah opsi untuk menentukan role user yang akan dibuat.

Setelah membuat user, maka langkah selanjutnya adalah membuat sebuah database. Perintah untuk membuat database:

createdb -O example_user databse_example

Untuk mengecek database yang sudah dibuat:

psql

Kemudian:

\l

Maka akan muncul gambar seperti ini yang menunjukkan bahwa databse_example sudah dibuat yang dimiliki oleh user example_user. Untuk keluar dari tampilan di bawah, tekan huruf q pada keyboard.

Step 3: Allow Remote Access

Ini adalah langkah terakhir untuk memperbolehkan database dapat diakses secara remote, untuk melakukan hal tersebut maka keluar dari user postgres dengan menggunakan command exit dan lanjutkan dengan command:

sudo vim /etc/postgresql/12/main/postgresql.conf

atau

sudo nano /etc/postgresql/12/main/postgresql.conf
  •     Note: Pada saat artikel ini dibuat, saya menggunakan PostgreSQL versi 12.

Setelah masuk ke editor dengan salah satu pilihan di atas, cari line dengan tulisan seperti ini:

#listen_addresses = 'localhost'

Kemudian uncomment (hilangkan "#") dan ganti 'localhost' menjadi '*'

listen_addresses = '*'

Save dan keluar dari file tersebut.

Langkah selanjutnya adalah mengedit file "pg_hba.conf".

sudo vim /etc/postgresql/12/main/pg_hba.conf

atau 

sudo nano /etc/postgresql/12/main/pg_hba.conf

Kemudian edit bagian ini:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

menjadi

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

Save dan keluar setelah melakukan perubahan. Langkah selanjutnya adalah memperbolehkan port 5432 untuk diakses.

sudo ufw allow 5432/tcp

Setelah itu restart PostgreSQL untuk apply perubahan yang tadi dilakukan.

sudo systemctl restart postgresql

Mengakses PostgreSQL secara remote:

Untuk mengecek apakah PostgreSQL sudah dapat diakses secara remote atau belum, maka dapat menjalankan perintah berikut ini:

psql -h dimasutomo.com -d databse_example -U example_user
  •     Note: 'dimasutomo.com' adalah nama domain saya yang bisa diganti dengan IP Address, 'databse_example' adalah nama database, dan 'example_user' adalah nama user.

Gambar di atas menunjukkan bahwa database PostgreSQL sudah dapat diakses secara remote dan bisa diaplikasikan sesuai dengan kebutuhan pada suatu project.