PostgreSQL adalah relational database management system (rdbms) yang open-source dan powerfull dengan pengembangan aktif selama lebih dari 30 tahun, memiliki reputasi kuat atas keandalan, ketahanan fitur, dan kinerja nya.

Pada artikel ini kami akan membahas bagaimana cara install dan setup PostgreSQL di ubuntu wsl. Untuk menginstall ubuntu/linux di windows dengan wsl kamu bisa membaca artikel sebelumnya.

Install PostgreSQL

1. Buka terminal di wsl Kamu dengan menekan ⊞ Win+R ketik bash, lalu ↵ Enter.

2. Sebagaimana pada panduan install PostgreSQL di Ubuntu kita dapat menginstall versi terbaru dari PostgreSQL pada ubuntu dengan menjalankan perintah berikut :

echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-archive-keyring.gpg >/dev/null
sudo apt update
sudo apt install postgresql

3. Jalankan postgresql dengan menjalankan perintah berikut :

sudo service postgresql start

Setup Pengguna Postgres

Default pengguna dari PostgreSQL yaitu postgres. Ganti kata sandi dari pengguna tersebut dengan langkah sebagai berikut :

1. Masuk ke psql sebagai postgres

sudo -u postgres psql

2. Beri kata sandi untuk pengguna postgres di psql dengan perintah berikut, setelah selesai ketik exit untuk keluar dari psql

ALTER USER postgres WITH ENCRYPTED PASSWORD 'kata_sandi_postgres_yang_kamu_inginkan';

Membuat Pengguna Dan Database Baru

1. Masuk ke psql sebagai postgres

sudo -u postgres psql

2. Masukan perintah untuk membuat pengguna baru, untuk lebih jelasnya bisa dilihat pada dokumentasi resmi PostgreSQL.

CREATE USER "nama_pengguna" WITH ENCRYPTED PASSWORD 'kata_sandi_pengguna_yang_kamu_inginkan';

4. Buat database baru dan pindahkan owner nya ke pengguna baru tersebut agar pengguna baru tersebut bisa memiliki akses penuh terhadap database tersebut (selain pengguna yang di set sebagai owner tersebut, pengguna postgres tetap bisa memiliki akses penuh terhadap semua database)

CREATE DATABASE "nama_database";
ALTER DATABASE "nama_database" OWNER TO "nama_pengguna";

5. Apabila tidak ingin mengarahkan owner dari database tertentu namun database tersebut ingin bisa diakses oleh pengguna yang bersangkutan, maka kita bisa bisa masuk ke database tersebut dan menambahkan kewenangan mengenai apa saja yang ingin kita tambahkan, untuk lebih jelasnya bisa dilihat pada dokumentasi resmi PostgreSQL

\c "nama_database"
GRANT ALL PRIVILEGES ON DATABASE "nama_database" TO "nama_pengguna";
GRANT ALL PRIVILEGES ON SCHEMA "public" TO "nama_pengguna";
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA "public" TO "nama_pengguna";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA "public" TO "nama_pengguna";

6. ketik exit untuk keluar dari psql

Backup & Restore Database

Untuk melakukan backup database pada PostgreSQL kita bisa menjalankan perintah berikut :

pg_dump \
--format=custom \
--verbose \
--no-privileges \
--no-owner \
--host=127.0.0.1 \
--port=5432 \
--username=nama_pengguna \
--password=kata_sandi \
--dbname=nama_database > nama_database_dan_tanggal_backup.dump

Sedangkan untuk melakukan restore database pada PostgreSQL kita bisa menjalankan perintah berikut, setelah itu masukan kata sandi dari pengguna database tersebut :

pg_restore \
--verbose \
--no-privileges \
--no-owner \
--host=127.0.0.1 \
--port=5432 \
--username=nama_pengguna \
--password \
--dbname=nama_database nama_database_dan_tanggal_backup.dump

Apabila kita ingin melakukan restore database dari file .sql kita bisa menjalankan perintah berikut

psql postgresql://{nama_pengguna}:{kata_sandi}@127.0.0.1:5432/{nama_database} -f nama_dan_tanggal_backup.sql

Untuk lebih jelasnya, kita bisa merujuk pada dokumentasi resmi PostgreSQL

Hubungkan GUI di Windows ke Database

Selanjutnya kamu bisa menggunakan GUI Favorit kamu di Windows untuk mengakses database PostgreSQL, apabila kamu menggunakan dbeaver kamu bisa menekan Test Connection... untuk mengecek apakah dbeaver dapat terhubung ke database kamu atau tidak.

Menjalankan PostgreSQL Sebagai Services

Tidak seperti pada ubuntu / linux yang berdiri sendiri, wsl tidak dapat menggunakan upstart atau systemd sebagai daemon / service management, oleh karena itu kita bisa melakukan hal berikut untuk menjalankan aplikasi sebagai services di wsl.

1. Buat / buka file pada /etc/sudoers.d/

sudo vi /etc/sudoers.d/wsl

2. Edit dengan menekan Insert dan tambahkan baris berikut agar tidak perlu memasukan password saat akan menjalankan PostgreSQL :

%sudo   ALL=(ALL) NOPASSWD: /usr/sbin/service postgresql *

3. Simpan file tersebut dengan menekan Esc lalu ketik :x dan tekan ↵ Enter.

4. Buka lokasi startup windows Kamu dengan menekan ⊞ Win+R ketik shell:startup, lalu ↵ Enter.

5. Ketik bash pada address bar.

6. Buat file .bat pada lokasi tersebut

vi wsl-postgresql.bat

7. Edit dengan menekan Insert dan tambahkan baris berikut :

wsl sudo service postgresql start

8. Simpan file tersebut dengan menekan Esc lalu ketik :x dan tekan ↵ Enter.

9. Restart komputer kamu, dan cek kembali apakah PostgreSQL sudah otomatis dijalankan.

Demikian artikel kali ini, semoga bermanfaat.