Installing PostgreSQL 17 on Ubuntu 24.04

Published on April 26, 2025
Installing PostgreSQL 17 on Ubuntu 24.04

PostgreSQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์ส (Open-source Relational Database Management System – RDBMS) ที่ทรงพลังและมีความสามารถสูง พัฒนาต่อเนื่องมากว่า 30 ปี
คุณสมบัติเด่นของ PostgreSQL:
-รองรับ SQL มาตรฐาน (Standard SQL:2008)
-รองรับข้อมูลแบบ JSON, XML, และข้อมูลเชิงพื้นที่ (GIS)
-รองรับฟังก์ชันขั้นสูง เช่น triggers, stored procedures, window functions, CTEs
-ขยายความสามารถได้ เช่น สร้าง data type เอง, เขียนฟังก์ชันด้วยภาษาอื่น (เช่น Python, PL/pgSQL)
-เสถียร ปลอดภัย และเหมาะกับงานระดับองค์กร
-มีระบบ replication, backup, และ clustering

PostgreSQL มี extensions ช่วยเพิ่มฟังก์ชันการทำงานให้กับฐานข้อมูล ซึ่งทำให้ PostgreSQL มีความยืดหยุ่นและสามารถตอบสนองความต้องการที่หลากหลายได้มากขึ้น ต่อไปนี้คือ extensions ที่ได้รับความนิยม:

1. PostGIS
ฟังก์ชัน: เพิ่มความสามารถในการจัดการข้อมูลเชิงพื้นที่ (Spatial data) เช่น การเก็บข้อมูลแผนที่ พิกัด และการคำนวณระยะห่าง
การใช้งาน: ใช้สำหรับงาน GIS (Geographic Information Systems), การวิเคราะห์แผนที่ หรือแอปพลิเคชันที่ต้องการการคำนวณข้อมูลตำแหน่ง

2. pg_partman
ฟังก์ชัน: ช่วยในการจัดการ partitioning ของตาราง (แบ่งตารางขนาดใหญ่ให้เล็กลงเพื่อเพิ่มประสิทธิภาพ)
การใช้งาน: ใช้เมื่อคุณต้องการแบ่งตารางที่มีข้อมูลจำนวนมากออกเป็นส่วนย่อย (partitions) เพื่อเพิ่มความเร็วในการ query

3. pg_stat_statements
ฟังก์ชัน: เก็บสถิติการใช้ SQL queries ที่มีการรันบ่อย ๆ ช่วยให้คุณสามารถวิเคราะห์ประสิทธิภาพและทำการปรับแต่งฐานข้อมูล
การใช้งาน: ใช้ในการวิเคราะห์ประสิทธิภาพของคำสั่ง SQL ในการทำงาน

4. hstore
ฟังก์ชัน: เพิ่มฟังก์ชันการจัดการข้อมูลในรูปแบบ key-value pairs
การใช้งาน: ใช้ในกรณีที่ต้องการจัดเก็บข้อมูลที่ไม่เป็นระเบียบ (non-relational data) โดยไม่ต้องใช้ฐานข้อมูล NoSQL

5. pg_trgm
ฟังก์ชัน: ช่วยเพิ่มประสิทธิภาพในการค้นหาข้อความโดยใช้ trigram (การแบ่งข้อความออกเป็นชุดของสามตัวอักษร)
การใช้งาน: ใช้ในการค้นหาข้อความที่ไม่ตรงกัน เช่น การค้นหาคำที่คล้ายกันหรือมีตัวสะกดผิด

6. pg_bigm
ฟังก์ชัน: เพิ่มการสนับสนุนการค้นหาคำในรูปแบบ “bigram” (การแบ่งข้อความออกเป็นชุดของสองตัวอักษร)
การใช้งาน: ใช้สำหรับการค้นหาข้อความที่มีความคล้ายคลึงกัน เช่น การค้นหาข้อความที่สะกดผิด หรือค้นหาคำในฟิลด์ขนาดใหญ่

7. Citus
ฟังก์ชัน: เปลี่ยน PostgreSQL ให้สามารถทำงานในรูปแบบ distributed database (ฐานข้อมูลแบบกระจาย)
การใช้งาน: ใช้เมื่อฐานข้อมูลมีข้อมูลจำนวนมากและต้องการขยายขนาดฐานข้อมูลแบบกระจายเพื่อรองรับการประมวลผลที่รวดเร็ว

8. uuid-ossp
ฟังก์ชัน: สร้าง UUIDs (Universally Unique Identifiers) ภายใน PostgreSQL
การใช้งาน: ใช้เมื่อคุณต้องการสร้างค่า unique identifier ที่ไม่ซ้ำกันสำหรับการอ้างอิงข้อมูลในระบบต่าง ๆ

9. pgcrypto
ฟังก์ชัน: เพิ่มฟังก์ชันการเข้ารหัสข้อมูล เช่น การเข้ารหัสและถอดรหัสข้อมูล
การใช้งาน: ใช้สำหรับการเข้ารหัสข้อมูลที่เก็บในฐานข้อมูลเพื่อความปลอดภัย เช่น การเข้ารหัสรหัสผ่านหรือข้อมูลสำคัญ

10. pg_repack
ฟังก์ชัน: ช่วยในการจัดการกับตารางและดัชนีที่มีการพังหรือเต็ม (bloat) โดยการแยกข้อมูลออกมาและจัดเรียงใหม่
การใช้งาน: ใช้เมื่อฐานข้อมูลเริ่มมีขนาดใหญ่และทำให้การ query ช้าลง

โดยรวมแล้วต้องบอกว่า PostgreSQL นั้นเป็นทั้งระบบฐานข้อมูลแบบดั้งเดิมและร่วมสมัยที่ ทำงานได้กับข้อมูลแทบจะทุกตัวแล้วในปัจจุบัน

อธิบายมาตั้งนาน แล้วเข้าเรื่องของเรากันดีกว่า วันนี้เราจะไปติดตั้ง PostgreSQL 17 ซึ่งเป็น version ล่าสุดบน Ubuntu 24.04 (Noble Numbat) ซึ่งเป็นตัวล่าสุดเหมือนกัน ก็ใหม่สุดๆ กันไปเลยนะ

1. เช็คก่อนเลยว่า Ubuntu ที่ใช้อยู่เป็น 24.04 เพื่อความชัวร์ ด้วยคำสั่ง

lsb_release -a

 

เราก็จะได้ผลลัพธ์ดังรูปที่ 1

2. พิมพ์

sudo apt update


เพื่อเป็นการอัพเดท repository index file ใหม่

3. ทำการเพิ่ม repository สำหรับ PostgreSQL 17

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

step 3

4. ทำการ import key ของ repository

curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

step 4

5. ทำการ update index file ใน repository ตัวใหม่ที่เราเพิ่งเพิ่มเข้าไปใน step 3

sudo apt update

step 5

6. ทำการติดตั้ง PostgreSQL 17

sudo apt install postgresql-17

ให้เราตอบ Y เพื่อยืนยันการติดตั้ง

Step 6

7. พิมพ์คำสั่งเพื่อ start service PostgreSQL และ enable เพื่อให้ทำงานอัตโนมัติหากเครื่องมีการรีบูต

sudo systemctl start postgresql
sudo systemctl enable postgresql

Step 7

8. พิมพ์คำสั่ง เพื่อทำการแก้ไขไฟล์ให้ postgreSQL ทำงานในทุก IP

sudo nano /etc/postgresql/17/main/postgresql.conf

9. ให้เลื่อนมายัง ตรงที่เขียนว่า #listen_addresses = ‘localhost’ และแก้เป็น
listen_addresses = ‘*’

หลังจากแก้ไขไฟล์แล้ว ให้ทำการ บันทึกด้วยคำสั่ง ^X และกด Y เพื่อบันทึกการเปลี่ยนแปลง

Step 8-9

10. พิมพ์คำสั่งเหล่านี้เพื่อเปลี่ยน authentication เป็นชนิด MD5 เพราะมันจำเป็นสำหรับการ authen ผ่าน remote ซึ่งส่วนใหญ่เราต้องใช้อยู่แล้ว เพราะในการ remote มาจัดการ

sudo sed -i '/^host/s/ident/md5/' /etc/postgresql/17/main/pg_hba.conf
sudo sed -i '/^local/s/peer/trust/' /etc/postgresql/17/main/pg_hba.conf
echo "host all all 0.0.0.0/0 md5" | sudo tee -a /etc/postgresql/17/main/pg_hba.conf

Step 10

11. ทำการ restart service postgresql เพื่อให้อ่านค่า config ใหม่ที่เราแก้ไปข้างต้น

sudo systemctl restart postgresql

12. พิมพ์คำสั่งเพื่อเข้าไปยัง postgresql

sudo -u postgres psql

ซึ่งหมายถึง เรากำลังเชื่อมต่อด้วย username ที่ชื่อว่า postgres ซึ่งเทียบเท่ากับ sa ใน SQL Server นั่นเอง

13. หลังจากนั้นทำการเปลี่ยนรหัสของ user : postgres ด้วยคำสั่ง

ALTER USER postgres PASSWORD 'SuperStrongPasswordHere';

14. หลังจากนั้นก็ออกด้วยคำสั่ง

\q

Step 11-14

ก็เป็นอันเรียบร้อยสำหรับการติดตั้ง PostgreSQL 17 บน Ubuntu 24.04 สำหรับผู้ที่ต้องการดูเป็นแบบ Video นั้นรับชมได้ที่ https://www.youtube.com/watch?v=ZKqwBzJB3uw

 

Understanding UUID

UUID นั้นต้องเรียกได้ว่ามีข้อถกเถียงกันมานานมา ในการใช้ในการเขียนโปรแกรมและการออกแบบดาต้าเบส วันนี้เราจะไปศึกษาว่ามันคืออะไร และ ในการออกแบบฐานข้อมูลมันเข้ามามีบทบาทอย่างไร UUID คืออะไร UUID ย่อมาจาก...

Read more »

วันสิ้นสุด License Perpetual ของ VMware มาถึงแล้ว รีบย้ายไป Proxmox VE กันเถอะ

ตอนที่ VMware ประกาศว่าจะออก ESXi 9 มานั้น ทุกคนในวงการก็คิดว่า มันน่าจะมาพร้อมการอัพเดทบางส่วนเหมือนทุกๆ ครั้งที่ผ่านมาเช่น การเพิ่มการสนับสนุนฮาร์ดแวร์...

Read more »

Garage ทางเลือกในการแทนที่ MinIO

MinIO นั้นเป็นซอฟต์แวร์ที่จะทำให้เราสามารถเก็บข้อมูลในลักษณะที่เป็น Object ได้ และ เรียกว่าเป็นตัวเลือกที่มีอยู่ไม่มากนักในท้องตลาดหากท่านต้องการจะสร้าง Object Storage Server เพื่อใช้ภายในองค์กร...

Read more »

Time Range Booking System

Time Range Booking คืออะไร และทำไมธุรกิจยุคใหม่จำเป็นต้องใช้ ในยุคที่ลูกค้าคาดหวัง ความรวดเร็วและความแม่นยำ มากขึ้น ระบบจองแบบเดิมที่เลือกแค่วันที่หรือรอบเวลา (slot...

Read more »

เพิ่มขีดความสามารถของ WordPress ด้วยการเชื่อมต่อ External API

WordPress คืออะไร WordPress คือระบบ CMS (Content Management System) แบบโอเพนซอร์ส ที่ใช้สำหรับสร้างเว็บไซต์โดยไม่จำเป็นต้องเขียนโค้ดเองเลย...

Read more »

Private Branding Hotel/Property Reservation System

ประเทศไทยนั้นมีจุดเด่นเรื่องสถานที่ท่องเที่ยวที่สวยงาม มีวัฒนธรรมอันยาวนาน และ ศิลปะท้องถิ่นที่มีเอกลักษณ์ รวมถึงอาหารที่ได้รับรางวัลระดับโลกมากมาย รวมถึงผู้คนที่มีจิตใจโอบอ้อมอารี และ สิ่งเหล่านั้นเองเป็นสิ่งที่ดึงดูดนักท่องเที่ยวทั่วโลกมายังประเทศไทย และมีการเติบโตของธุรกิจโรงแรมอย่างมากมายทุกประเภทไม่ว่าจะเป็น โรงแรม...

Read more »