Mengatur PostgreSQL remote connection adalah suatu keharusan yang harus dilakukan untuk dapat mengakses data dari lokasi yang berbeda. Secara default PostgreSQL hanya mengijinkan koneksi yang berasal dari lokal dan itu akan menjadi sebuah batasan di berbagai kondisi. Remote access untuk sebuah PostgreSQL database adalah suatu keharusan yang sangat dibutuhkan apalagi untuk aplikasi yang membutuhkan akses ke data dari berbagai tempat dan untuk tim yang bekerja di berbagai bagian di dunia. Hal ini juga penting bagi Database Administrator apabila terjadi kerusakan saat Database Administrator sedang tidak di lokasi atau sedang bekerja secara remote. Mengatur remote access ke PostgreSQL dapat menimbulkan fleksibilitas, aksesibilitas, dan kolaborasi dimana dapat menigkatkan produktifitas dan efisiensi di berbagai hal. Dalam blog ini saya akan menyampaikan beberapa hal yang harus dilakukan untuk mengatur remote access untuk PostgreSQL. Tentu saja hal-hal yang perlu diperhatikan adalah system yang digunakan, anda harus menyesuaikan dengan system yang anda gunakan saat ini. Karena dalam blog ini saya hanya mengkhususkan tutorial ini untuk remote dari client dangan sistem operasi linux ke server yang berbasis linux juga.
Kebutuhan/Prasayarat
- Server (Rocky Linux 9)
- PosgreSQL Database 16
- Client (Fedora Workstation 40)
Untuk kebutuhan di atas anda bisa sesuaikan dengan ekosistem yang ada pada anda saat ini.
Langkah-langkah
Langkah pertama yang anda lakukan adalah mengecek apakah PostgreSQL sudah terinstal di server anda dan sudah berjalan tentunya. Anda dapat mengeceknya denga command sebagai berikut.
systemctl status postgresql-16
● postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
Active: active (running) since Sun 2024-04-28 01:58:49 UTC; 29min ago
Docs: https://www.postgresql.org/docs/16/static/
Main PID: 1185 (postgres)
Tasks: 7 (limit: 23928)
Memory: 19.5M
CPU: 250ms
CGroup: /system.slice/postgresql-16.service
├─1185 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
├─1186 "postgres: logger "
├─1187 "postgres: checkpointer "
├─1188 "postgres: background writer "
├─1190 "postgres: walwriter "
├─1191 "postgres: autovacuum launcher "
└─1192 "postgres: logical replication launcher "
Apr 28 01:58:49 blue systemd[1]: Starting PostgreSQL 16 database server...
Apr 28 01:58:49 blue postgres[1185]: 2024-05-03 01:58:49.316 UTC [1185] LOG: redirecting log output to logging collector process
Apr 28 01:58:49 blue postgres[1185]: 2024-05-03 01:58:49.316 UTC [1185] HINT: Future log output will appear in directory "log".
Apr 28 01:58:49 blue systemd[1]: Started PostgreSQL 16 database server.
Apabila PostgreSQL sudah terinstall dan sudah berjalan pada server anda maka akan tampak tampilan seperti di atas, langkah selanjutnya ada mulai memodifikasi pengaturan yang ada pada PostgreSQL. Anda dapat melakukan modifikasi dengan menggunakan command sebagai berikut.
nano /var/lib/pgsql/16/data/pg_hba.conf
Lalu pada line “IPv4 Local Connection” anda dapat menambah baris seperti dibawah ini
host all 0.0.0.0/0 *AuthMethod*
Pada contoh baris diatas anda dapat mengganti alamat IP dengan 0.0.0.0/0 dan menyesuaikan metode autentikasi sesuai kebutuhan anda, untuk saya sendiri menggunakana metode md5. Setelah itu anda dapat melanjutkan untuk memodifikasi file pengaturan yang lain, anda dapat menggunakan command sebagai berikut.
nano /var/lib/pgsql/16/data/postgresql.conf
Lalu anda harus temukan baru dengan nama ” listen_addresses = ‘localhost’ ” lalu anda dapat menggantinya dengan ip server milik anda seperti contoh dibawah ini.
listen_addresses = 'xxx.xxx.xxx.xxx'
Selanjutnya anda dapat merestart service dari PostgreSQL dengan command sebagai berikut.
systemctl restart postgresql-16
Setelah melakukan restart makan hal pertama yang harus anda lakukan tentu saja mencoba melakukan remote access ke PostgreSQL anda, sebelum anda melakukannya, hal yang perlu diperhatikan pada client juga harus terinstall PostgreSQL (client), jika sudah terinstall langkah selanjutnya dengan mencoba melakukan remote access ke PostgreSQL dengan comman sebagai berikut.
psql -h *alamatserver* -U *userposgresql*
Setelahnya anda akan diminta untuk memasukan password jika anda mengaktifkan metode autentikasi tersebut. Apabila password benar makan anda akan dapat masuk ke PostgreSQL Database anda.