Skip to main content

Belajar PostgreSQL 18.6 untuk Newbie (Part 1): Dari Installation hingga DDL & DML dengan pgAdmin 4 Web

Belajar PostgreSQL 18.6 untuk Newbie: Dari Installation hingga DDL & DML dengan pgAdmin 4 Web

Pengenalan

Saya sudah lama biasa dengan Microsoft SQL Server dan SQL Server Management Studio (SSMS), tetapi PostgreSQL ialah sesuatu yang baru bagi saya.

Pada mulanya saya menjangkakan PostgreSQL akan lebih kurang sama dengan Microsoft SQL Server. Secara asasnya memang begitu — kedua-duanya ialah relational database management system (RDBMS), menggunakan database, schema, table, column, primary key, foreign key, SQL dan sebagainya.

Tetapi apabila mula menggunakannya, ada beberapa perkara yang agak berbeza.

Contohnya, PostgreSQL mempunyai konsep Role, SERIAL, SEQUENCE, search_path, ownership dan permission model yang sedikit berbeza daripada SQL Server.

Artikel ini ditulis dari perspektif seorang newbie PostgreSQL yang sudah biasa dengan MSSQL.

Matlamatnya mudah:

Pasang PostgreSQL 18.6, configure dengan betul, pasang pgAdmin 4 Web, sambungkan pgAdmin kepada PostgreSQL, kemudian belajar membuat database, user/role, permission, table dan data.

Saya sengaja tidak terus masuk ke topik PostgreSQL yang terlalu advanced. Kita mulakan dengan perkara yang benar-benar diperlukan untuk mendapatkan PostgreSQL berjalan dengan sempurna.


Bahagian 1 — Setup PostgreSQL 18.6

1. PostgreSQL itu apa?

PostgreSQL ialah open-source relational database management system.

Jika kita biasa dengan Microsoft SQL Server, kita boleh fikir secara mudah:

MicrosoftPostgreSQL
Microsoft SQL ServerPostgreSQL
SSMSpgAdmin
DatabaseDatabase
SchemaSchema
TableTable
ColumnColumn
INTINTEGER
VARCHARVARCHAR
IDENTITYIDENTITY / SERIAL + sequence
Login/UserRole
GRANTGRANT
ViewView
IndexIndex

Sudah tentu kedua-duanya tidak 100% sama, tetapi jadual ini cukup untuk membantu kita membina mental model pada peringkat awal.


2. Installation PostgreSQL

Dalam setup saya, PostgreSQL dipasang pada Ubuntu Server menggunakan repository PostgreSQL (PGDG).

Selepas installation selesai, perkara pertama yang perlu disahkan ialah versi PostgreSQL:

psql --version

Contohnya:

psql (PostgreSQL) 18.6

Kemudian kita boleh semak status PostgreSQL:

sudo systemctl status postgresql@18-main

Jika service berjalan, kita akan melihat status:

active (running)

Ini ialah pemeriksaan asas tetapi penting.

Jangan terus menganggap installation berjaya hanya kerana package sudah dipasang. Kita mahu memastikan database server benar-benar sedang berjalan.


3. PostgreSQL menggunakan port 5432

Secara default PostgreSQL menggunakan:

TCP 5432

Kita boleh menyemaknya dengan:

sudo ss -lntp | grep ':5432'

Dalam setup saya, PostgreSQL akhirnya mendengar pada:

127.0.0.1:5432
172.18.0.1:5432

Kenapa bukan semua interface?

Ini berkaitan dengan security.


4. Jangan terus expose PostgreSQL ke LAN

Ini antara perkara yang saya rasa penting untuk newbie.

Kita mungkin terfikir:

"Kalau nak sambung dari komputer lain, buka saja PostgreSQL kepada semua IP."

Contohnya:

0.0.0.0:5432

Tetapi untuk server peribadi, perkara itu tidak semestinya diperlukan.

Dalam setup saya, PostgreSQL hanya perlu menerima connection daripada:

localhost

dan daripada network Docker yang digunakan oleh pgAdmin.

Oleh itu configuration listen_addresses dibuat secara terhad:

127.0.0.1,172.18.0.1

Dengan cara ini PostgreSQL tidak perlu dibuka terus kepada LAN atau Tailscale.

Ini satu prinsip yang baik:

Buka service hanya kepada network yang benar-benar memerlukannya.


5. pg_hba.conf — siapa boleh masuk?

Selain listen_addresses, PostgreSQL mempunyai satu lagi configuration yang sangat penting:

pg_hba.conf

HBA bermaksud:

Host-Based Authentication

File ini menentukan connection daripada siapa, database apa, dari mana dan menggunakan authentication method apa.

Contohnya kita menggunakan:

host    all    all    172.18.0.0/16    scram-sha-256

Maksud ringkasnya:

  • connection jenis host
  • boleh digunakan untuk database/user yang dibenarkan
  • datang daripada Docker network 172.18.0.0/16
  • authentication menggunakan SCRAM-SHA-256

Untuk localhost pula:

host    all    all    127.0.0.1/32    scram-sha-256

Jadi ada dua lapisan yang berbeza:

listen_addresses
        ↓
"Interface mana PostgreSQL dengar?"

pg_hba.conf
        ↓
"Siapa yang dibenarkan masuk?"

Ini konsep penting dalam PostgreSQL.


6. Password authentication

PostgreSQL saya menggunakan:

password_encryption = scram-sha-256

SCRAM ialah authentication mechanism yang lebih moden berbanding kaedah password lama seperti MD5.

Selepas installation, role postgres wujud.

Jika password postgres perlu ditetapkan atau ditukar, kita boleh masuk sebagai operating-system user postgres:

sudo -u postgres psql

Kemudian:

\password postgres

Masukkan password baru dan keluar:

\q

Sekarang kita sudah mempunyai database server PostgreSQL yang berjalan dan mempunyai authentication yang boleh digunakan.


7. Kenapa saya pilih pgAdmin 4 Web?

Jika datang daripada MSSQL, saya rasa pgAdmin 4 ialah antara cara paling mudah untuk mula belajar PostgreSQL.

SSMS memberikan GUI yang sangat lengkap untuk SQL Server.

pgAdmin memberikan pengalaman yang hampir serupa untuk PostgreSQL.

Dalam pgAdmin kita boleh:

  • melihat server
  • melihat database
  • melihat schema
  • melihat table
  • melihat column
  • mengurus role
  • mengurus permission
  • menggunakan Query Tool
  • melihat/edit data
  • membuat database
  • membuat table
  • backup dan restore
  • melihat object database

Dalam setup saya, pgAdmin 4 Web dijalankan sebagai Docker container.

Ia tidak perlu bermaksud PostgreSQL juga mesti berada dalam Docker.

Dalam kes saya:

Ubuntu Server
│
├── PostgreSQL 18.6
│
└── Docker
    └── pgAdmin 4 Web

pgAdmin berada dalam Docker, manakala PostgreSQL berjalan sebagai service pada host.


8. Sambungan pgAdmin kepada PostgreSQL

Salah satu perkara yang menarik ialah kita tidak menggunakan:

localhost

sebagai hostname PostgreSQL daripada dalam pgAdmin container.

Kenapa?

Kerana localhost dalam container bermaksud:

container pgAdmin itu sendiri.

Bukan Ubuntu host.

Dalam setup Docker network saya, gateway network ialah:

172.18.0.1

Maka server PostgreSQL didaftarkan dalam pgAdmin menggunakan:

Host: 172.18.0.1
Port: 5432
Username: postgres
Password: <password PostgreSQL>

Dengan ini:

Browser
   ↓
pgAdmin Web
   ↓
Docker network
   ↓
172.18.0.1:5432
   ↓
PostgreSQL 18.6

Dan yang penting, PostgreSQL tidak perlu dibuka kepada seluruh LAN.

Comments

Popular posts from this blog

Siri Vibe Coding S01E03: FreeLLMAPI: 16 Otak, 1 Pintu Rev. #2

Ini artikel KETIGA dalam siri Vibe Coding saya. Kalau belum baca Artikel 1 (VSCode + Cline + MCP + MSSQL) dan Artikel 2 (Local AI Ollama), sila baca dulu. Dalam artikel ni, kita tambah SATU lagi "otak" untuk Cline — kali ni bukan local, tapi gabungan pelbagai AI cloud percuma dalam satu tempat. 😄 Nota jenaka : Macam artikel-artikel lepas, saya selit jenaka sikit-sikit. Kalau tak kena selera, skip terus ke arahan teknikal. Yang penting duit awak selamat (percuma je pun), bukan lawak saya kena. 📑 Kandungan (Table of Content) Kenapa Perlu FreeLLMAPI? Bahagian 1: Prasyarat — Install Docker Desktop Bahagian 2: Install FreeLLMAPI (Guna Port 11500) Bahagian 3: Urus Akaun Provider — Contoh Lengkap dengan Groq Bahagian 4: Guna FreeLLMAPI Secara Standalone Bahagian 5: Sambungkan ke Open WebUI Bahagian 6: Sambungkan ke Jan.ai Bahagian 7: Sambungkan ke VSCode + Cline Bahagian 8: Ujian Bahagian 9: Bacaan Lanjut Penutup Kenapa Perlu FreeLLMAPI? Dalam Artikel 2, kita setup l...

Siri Vibe Coding S01E01: Panduan Lengkap: VSCode + Cline: Cinta Pandang Pertama (Zero to Hero) Rev.#2

Panduan ini ditulis untuk sesiapa yang baru nak mula "vibe coding" — iaitu menulis kod dengan bantuan AI agent yang boleh terus edit fail, jalankan command, dan sambung ke database. Tak perlu pengalaman VSCode sebelum ni. Ikut je step demi step. 📸 Nota pasal screenshot dalam panduan ni : Setiap bahagian penting ada penanda 📸 [AMBIL SCREENSHOT DI SINI] — ambil gambar skrin awak SENDIRI di titik tu semasa ikut langkah, dan sisipkan dalam blog post awak. Ini lebih baik dari guna gambar orang lain — versi UI awak akan tepat sama dengan apa pembaca nampak di skrin mereka, dan awak elak isu hak cipta guna gambar orang lain. 😄 Amaran kecil : Panduan ni panjang — bukan sebab saya "tak reti" ringkaskan, tapi sebab vibe coding ni ada BANYAK moving parts (editor, AI, database, semua kena "kenal" antara satu sama lain). Saya selit sikit jenaka sepanjang jalan supaya mata tak "freeze" macam program yang hang. Kalau jenaka tak sampai, skip terus ke ara...

AI Tools 12 For Marketing

 AI Tools 12 For Marketing