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:
| Microsoft | PostgreSQL |
|---|---|
| Microsoft SQL Server | PostgreSQL |
| SSMS | pgAdmin |
| Database | Database |
| Schema | Schema |
| Table | Table |
| Column | Column |
INT | INTEGER |
VARCHAR | VARCHAR |
IDENTITY | IDENTITY / SERIAL + sequence |
| Login/User | Role |
GRANT | GRANT |
| View | View |
| Index | Index |
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 --versionContohnya:
psql (PostgreSQL) 18.6Kemudian kita boleh semak status PostgreSQL:
sudo systemctl status postgresql@18-mainJika 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 5432Kita boleh menyemaknya dengan:
sudo ss -lntp | grep ':5432'Dalam setup saya, PostgreSQL akhirnya mendengar pada:
127.0.0.1:5432
172.18.0.1:5432Kenapa 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:5432Tetapi untuk server peribadi, perkara itu tidak semestinya diperlukan.
Dalam setup saya, PostgreSQL hanya perlu menerima connection daripada:
localhostdan daripada network Docker yang digunakan oleh pgAdmin.
Oleh itu configuration listen_addresses dibuat secara terhad:
127.0.0.1,172.18.0.1Dengan 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.confHBA 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-256Maksud 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-256Jadi 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-256SCRAM 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 psqlKemudian:
\password postgresMasukkan password baru dan keluar:
\qSekarang 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 WebpgAdmin berada dalam Docker, manakala PostgreSQL berjalan sebagai service pada host.
8. Sambungan pgAdmin kepada PostgreSQL
Salah satu perkara yang menarik ialah kita tidak menggunakan:
localhostsebagai 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.1Maka 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.6Dan yang penting, PostgreSQL tidak perlu dibuka kepada seluruh LAN.
Comments