คำตอบสั้น ๆ: ติดตั้ง PostgreSQL บน Ubuntu 22.04 หรือ 24.04 จาก Repository ของ Ubuntu หรือ PGDG แล้วสร้าง Role และฐานข้อมูลสำหรับแอปพลิเคชัน รวมถึงผู้ใช้แบบอ่านอย่างเดียว
คู่มือนี้อธิบาย PostgreSQL ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
PostgreSQL เป็นฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่นิยมใช้กับแอปพลิเคชันยุคใหม่ เช่น Django, Rails, Odoo และระบบที่ต้องการฟีเจอร์ขั้นสูงอย่าง JSONB หรือ Full-text Search บทความนี้อธิบายการติดตั้ง PostgreSQL บน Ubuntu 22.04 และ 24.04 ทั้งจาก Repository ของ Ubuntu และจาก Repository ทางการของ PostgreSQL จากนั้นสร้างผู้ใช้และฐานข้อมูลสำหรับแอปพลิเคชัน พร้อมตัวอย่างผู้ใช้แบบอ่านอย่างเดียว
สิ่งที่ผู้ที่เคยใช้ MySQL มักสับสนคือ PostgreSQL แยกระหว่าง "ผู้ใช้ของระบบปฏิบัติการ" กับ "Role ของฐานข้อมูล" และการยืนยันตัวตนผ่าน Socket ภายในเครื่องจะใช้ชื่อผู้ใช้ Linux เป็นหลัก บทความนี้จะอธิบายจุดนี้ไว้ด้วย
สิ่งที่ต้องเตรียม
- Cloud Server ที่ติดตั้ง Ubuntu 22.04 หรือ 24.04 และเข้าผ่าน SSH ได้
- ผู้ใช้ที่มีสิทธิ์
sudoดู สร้างผู้ใช้ใหม่และให้สิทธิ์ sudo บน Linux - RAM อย่างน้อย 1 GB สำหรับการใช้งานทั่วไป ถ้า RAM น้อยควรเพิ่ม Swap ตาม เพิ่ม Swap File บน Linux Server
ขั้นตอนที่ 1: เลือกเวอร์ชันที่จะติดตั้ง
| แหล่งติดตั้ง | เวอร์ชันที่ได้ | เหมาะกับ |
|---|---|---|
| Repository ของ Ubuntu 22.04 | PostgreSQL 14 | ต้องการความเรียบง่าย อัปเดตความปลอดภัยผ่าน Ubuntu |
| Repository ของ Ubuntu 24.04 | PostgreSQL 16 | เช่นเดียวกัน |
| Repository ทางการ (apt.postgresql.org หรือ PGDG) | เลือกเวอร์ชันหลักที่ยังได้รับการสนับสนุนได้ | แอปพลิเคชันกำหนดเวอร์ชันขั้นต่ำ หรือต้องการเวอร์ชันล่าสุด |
ถ้าแอปพลิเคชันไม่ได้กำหนดเวอร์ชัน การใช้แพ็กเกจของ Ubuntu เป็นทางเลือกที่ดูแลง่ายที่สุด
ขั้นตอนที่ 2: ติดตั้ง PostgreSQL
แบบที่ 1: จาก Repository ของ Ubuntu
sudo apt update
sudo apt install postgresql postgresql-contrib
แพ็กเกจ postgresql-contrib มีส่วนขยายที่ใช้บ่อย เช่น pg_stat_statements และ pgcrypto (บน Ubuntu รุ่นใหม่ส่วนขยายเหล่านี้รวมมากับแพ็กเกจหลักแล้ว การสั่งติดตั้งซ้ำไม่มีผลเสีย)
แบบที่ 2: จาก Repository ทางการของ PostgreSQL
ใช้สคริปต์ของแพ็กเกจ postgresql-common ตามคู่มือทางการที่ postgresql.org/download/linux/ubuntu เพื่อเพิ่ม Repository แล้วติดตั้งเวอร์ชันที่ต้องการ (ตัวอย่างนี้ใช้ 17)
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install postgresql-17
ไม่ว่าจะติดตั้งแบบใด ระบบจะสร้าง Cluster ชื่อ main สร้างผู้ใช้ Linux ชื่อ postgres และเริ่ม Service ให้อัตโนมัติ
ขั้นตอนที่ 3: ตรวจสอบว่า Service ทำงาน
pg_lsclusters
ผลลัพธ์ควรมีลักษณะดังนี้ (เลขเวอร์ชันขึ้นกับที่ติดตั้ง)
Ver Cluster Port Status Owner Data directory Log file
16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
บน Ubuntu Service ชื่อ postgresql เป็นเพียงตัวครอบ ส่วน Cluster ที่ทำงานจริงคือ postgresql@16-main ถ้าต้องการดูสถานะหรือ Log ให้ระบุชื่อเต็ม
sudo systemctl status postgresql@16-main
sudo systemctl enable postgresql
ไฟล์ตั้งค่าอยู่ที่ /etc/postgresql/<เวอร์ชัน>/main/ ได้แก่ postgresql.conf และ pg_hba.conf ส่วนข้อมูลอยู่ที่ /var/lib/postgresql/<เวอร์ชัน>/main ค่าเริ่มต้นรับการเชื่อมต่อจาก localhost เท่านั้น ซึ่งปลอดภัยที่สุด
ขั้นตอนที่ 4: เข้าสู่ psql ในฐานะผู้ดูแล
ค่าเริ่มต้นของ Ubuntu ใช้วิธีตรวจสอบแบบ peer สำหรับการเชื่อมต่อผ่าน Socket ภายในเครื่อง หมายความว่าผู้ใช้ Linux ชื่อ postgres จะเข้าเป็น Role postgres ได้โดยไม่ต้องใช้รหัสผ่าน
sudo -u postgres psql
จะได้ Prompt postgres=# คำสั่งพื้นฐานของ psql ที่ใช้บ่อย
| คำสั่ง | ความหมาย |
|---|---|
\l | แสดงรายชื่อฐานข้อมูล |
\du | แสดงรายชื่อ Role (ผู้ใช้) |
\c ชื่อฐานข้อมูล | สลับไปยังฐานข้อมูลอื่น |
\dt | แสดงตารางใน Schema ปัจจุบัน |
\conninfo | แสดงข้อมูลการเชื่อมต่อปัจจุบัน |
\q | ออกจาก psql |