Skip to content
VDS · Basis data

PostgreSQL: instalasi dan database pertama Anda

Instalasi PostgreSQL di VDS, role dan database pertama, cara autentikasi bekerja di pg_hba.conf, dan troubleshooting error koneksi.

Diperbarui 23 Agustus 2026

PostgreSQL adalah pilihan default untuk aplikasi di Python, Node.js, dan Go. PostgreSQL memperlakukan data lebih ketat daripada MySQL dan menangani kueri kompleks dengan lebih baik.

Instalasi

apt update && apt install -y postgresql postgresql-contrib   # Debian, Ubuntu
systemctl enable --now postgresql

Di AlmaLinux dan CentOS Stream Anda perlu membuat cluster secara manual:

dnf install -y postgresql-server postgresql-contrib
postgresql-setup --initdb
systemctl enable --now postgresql

Periksa versi dan status:

sudo -u postgres psql -c "SELECT version();"

Role dan database

Di PostgreSQL, pengguna disebut role. Buat role terpisah untuk setiap proyek:

sudo -u postgres psql
CREATE ROLE shop WITH LOGIN PASSWORD 'long-random-password';
CREATE DATABASE shop OWNER shop ENCODING 'UTF8';
REVOKE ALL ON DATABASE shop FROM PUBLIC;

String koneksi untuk aplikasi:

postgresql://shop:password@127.0.0.1:5432/shop

Periksa dari pengguna sistem:

psql "postgresql://shop:password@127.0.0.1:5432/shop" -c "\dt"

Autentikasi

Dua file menentukan siapa yang dapat masuk dan dari mana.

/etc/postgresql/17/main/postgresql.conf:

listen_addresses = 'localhost'
port = 5432

/etc/postgresql/17/main/pg_hba.conf — aturan dibaca dari atas ke bawah, dan aturan pertama yang cocok yang menang:

local   all   postgres            peer
local   all   all                 scram-sha-256
host    all   all   127.0.0.1/32  scram-sha-256

Metode peer berarti "pengguna sistem cocok dengan role" — itulah sebabnya sudo -u postgres psql berfungsi tanpa kata sandi, sedangkan perintah yang sama dari pengguna lain tidak.

Setelah mengedit: systemctl reload postgresql. Jangan pernah menggunakan metode trust — metode ini membiarkan siapa saja masuk tanpa kata sandi sama sekali.

Untuk akses dari luar, baca akses jarak jauh: Anda tidak boleh membuka port ke luar tanpa membatasinya berdasarkan alamat.

Kesalahan umum

GejalaPenyebab
role "..." does not existAnda terhubung sebagai pengguna sistem yang tidak memiliki role
password authentication failedAturan di pg_hba.conf memerlukan metode berbeda, atau kata sandi belum diatur
could not connect to server: No such file or directoryLayanan tidak berjalan, atau menggunakan port berbeda
permission denied for schema publicDi versi 15+ Anda harus memberikan hak pada public secara eksplisit: GRANT ALL ON SCHEMA public TO shop;
FATAL: sorry, too many clientsmax_connections sudah habis — siapkan pool di sisi aplikasi

Log: /var/log/postgresql/ atau journalctl -u postgresql.

Langkah selanjutnya

Jangan berikan role superuser kepada aplikasi. Role pemilik database biasa dapat melakukan semua yang dibutuhkannya, tetapi tidak dapat menghapus database tetangga jika migrasi gagal.