การจัดการและใช้งานฐานข้อมูล PostgreSQL
PostgreSQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่ทรงพลัง สามารถขยายได้สูงเป็นไปตามมาตรฐาน และได้รับการยอมรับอย่างกว้างขวางในกลุ่มนักพัฒนา ServBay ในฐานะสภาพแวดล้อมการพัฒนาเว็บบน macOS ได้บรรจุ PostgreSQL มาในตัว เพื่อให้การติดตั้งและจัดการง่ายขึ้นอย่างมาก
บทความนี้เป็นคู่มือสำหรับนักพัฒนา อธิบายวิธีจัดการและใช้งาน PostgreSQL ในสภาพแวดล้อม ServBay อย่างมีประสิทธิภาพ ครอบคลุมตั้งแต่การติดตั้ง การตั้งค่า การใช้งานประจำวัน การสำรองข้อมูล กู้คืนข้อมูล การเพิ่มประสิทธิภาพ และการป้องกันความปลอดภัยที่สำคัญ
การติดตั้งและตั้งค่า PostgreSQL
ServBay มาพร้อมอินเทอร์เฟซกราฟิกที่ใช้งานง่ายสำหรับจัดการแพ็คเกจซอฟต์แวร์รวมถึง PostgreSQL
วิธีติดตั้ง PostgreSQL
- เปิดแอปพลิเคชัน ServBay
- คลิกที่เมนูนำทางด้านซ้ายที่
แพ็คเกจ
- ค้นหา
PostgreSQL
ในรายการแพ็คเกจ - เลือกเวอร์ชันของ PostgreSQL ที่ต้องการ (ServBay รองรับหลายเวอร์ชัน เช่น PostgreSQL 10 ถึง 17)
- คลิกปุ่มติดตั้งเพื่อเริ่มการติดตั้ง
ภาพ: เลือกและติดตั้งเวอร์ชั่น PostgreSQL ใน ServBay
การสตาร์ท, หยุด และจัดการบริการ PostgreSQL
หลังติดตั้งเสร็จแล้ว คุณสามารถจัดการสถานะการทำงานของบริการ PostgreSQL ได้ทั้งจากแพลตฟอร์มการจัดการของ ServBay หรือใช้เครื่องมือ command line servbayctl
จัดการผ่านแพลตฟอร์ม ServBay
- เปิดแอปพลิเคชัน ServBay
- คลิกที่เมนูนำทางด้านซ้ายที่
แพ็คเกจ
- ค้นหาเวอร์ชัน PostgreSQL ที่ติดตั้งไว้
- ใช้สวิตช์ข้างชื่อแพ็คเกจเพื่อเริ่ม หยุด หรือรีสตาร์ทบริการ
จัดการผ่าน command line ด้วย servbayctl
servbayctl
คือคำสั่งบรรทัดคำสั่งพลังสูงจาก ServBay เพื่อดูแลจัดการส่วนประกอบต่างๆ
bash
# สตาร์ทบริการ PostgreSQL เวอร์ชั่นที่ระบุ (เช่น PostgreSQL 16)
servbayctl start postgresql 16
# หยุดบริการ PostgreSQL เวอร์ชั่นที่ระบุ (เช่น PostgreSQL 16)
servbayctl stop postgresql 16
# รีสตาร์ทบริการ PostgreSQL เวอร์ชั่นที่ระบุ (เช่น PostgreSQL 16)
servbayctl restart postgresql 16
# ตรวจสอบสถานะบริการ PostgreSQL เวอร์ชั่นที่ระบุ (เช่น PostgreSQL 16)
servbayctl status postgresql 16
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
หมายเหตุ: หมายเลขเวอร์ชัน (เช่น 16
) ในคำสั่ง ควรตรงกับเวอร์ชั่นที่คุณติดตั้งบน ServBay
การตั้งค่า PostgreSQL
ServBay เปิดโอกาสให้คุณปรับแต่ง config ของ PostgreSQL ได้อย่างสบายใจ การตั้งค่าที่ดีจะช่วยเพิ่มประสิทธิภาพ ปลอดภัย และใช้ทรัพยากรระบบอย่างเหมาะสม
ServBay มาพร้อมอินเทอร์เฟซกราฟิกที่ทรงพลังเพื่อคอนฟิก PostgreSQL โดยคุณสามารถแก้ไขไฟล์ config ได้โดยตรงเช่นเดียวกัน ศึกษาวิธีเพิ่มเติมที่ การแก้ไขการตั้งค่า PostgreSQL เพื่อดูวิธีแก้ไขและปรับจูนพารามิเตอร์ต่างๆ ผ่าน UI ของ ServBay หรือการแก้ไฟล์ด้วยตนเอง
การเชื่อมต่อฐานข้อมูล PostgreSQL
การเชื่อมต่อฐานข้อมูล PostgreSQL คือจุดเริ่มของการทำงานฐานข้อมูล ทั้งนี้คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง psql
หรือเครื่องมือกราฟิก เช่น pgAdmin เพื่อเชื่อมต่อกับอินสแตนซ์ PostgreSQL ที่รันอยู่บน ServBay
ServBay มีวิธีเชื่อมต่อหลัก 2 แบบ ได้แก่ เชื่อมต่อผ่าน TCP/IP (เหมาะกับเครื่องมือภายนอกหรือข้าม container/service) และเชื่อมต่อผ่าน local socket (แนะนำสำหรับการใช้งานภายใน ServBay เพื่อประสิทธิภาพและความปลอดภัยที่เหนือกว่า)
การขอรับบัญชีเชื่อมต่อ (Credential)
ก่อนเชื่อมต่อ จำเป็นต้องขอรับ username และ password สำหรับ PostgreSQL โดยปกติ ServBay จะสร้างบัญชีเริ่มต้นขึ้นมาตอนติดตั้ง สามารถตรวจสอบได้ในหน้าจัดการของ ServBay โดยเฉพาะสำหรับผู้ใช้หลัก (postgres
) หรือผู้ใช้เพิ่มเติมที่คุณสร้างขึ้นเอง
เชื่อมต่อผ่าน command line tool psql
psql
คือเครื่องมือ client แบบโต้ตอบอย่างเป็นทางการของ PostgreSQL
เชื่อมต่อแบบ TCP/IP: ใช้โพรโทคอลเครือข่าย เหมาะสำหรับ
localhost
หรือ IP network address อื่นๆ พอร์ตดีฟอลต์ใน ServBay คือ5432
bashpsql -U your_username -h localhost -d your_database -p 5432
1เปลี่ยน
your_username
เป็นชื่อผู้ใช้ฐานข้อมูล และyour_database
เป็นชื่อฐานข้อมูลที่คุณจะเชื่อมต่อเชื่อมต่อผ่าน local Socket: ปกติ ServBay จะตั้งค่า PostgreSQL ให้ใช้ Unix Domain Socket เชื่อมต่อแบบ local ซึ่งทั้งเร็วและปลอดภัยกว่า โดย socket file อยู่ในโฟลเดอร์ชั่วคราวของ ServBay
bashpsql -U your_username -h /Applications/ServBay/tmp -d your_database
1เปลี่ยน
your_username
เป็นชื่อผู้ใช้,your_database
เป็นชื่อฐานข้อมูล และ/Applications/ServBay/tmp
คือ path เริ่มต้นที่ socket ของ ServBay PostgreSQL จะอยู่
เชื่อมต่อผ่านเครื่องมือกราฟิก pgAdmin
pgAdmin เป็นเครื่องมือจัดการ PostgreSQL แบบกราฟิกยอดนิยม มีฟังก์ชันครบครัน
- ติดตั้ง pgAdmin: ถ้า ServBay ไม่มี pgAdmin ในตัว ให้ดาวน์โหลดได้ที่ เว็บไซต์ pgAdmin
- เปิดโปรแกรม pgAdmin
- สร้างการเชื่อมต่อเซิร์ฟเวอร์ใหม่: คลิก
Add New Server
- ป้อนข้อมูลการเชื่อมต่อ:
- General: กรอกชื่อการเชื่อมต่อ (เช่น
ServBay PostgreSQL
) - Connection:
- Hostname/address:
localhost
- Port:
5432
- Maintenance database: ปกติจะเป็น
postgres
- Username: ดูชื่อผู้ใช้จาก ServBay panel (เช่น
postgres
) - Password: ดูรหัสผ่านจาก ServBay panel
- Hostname/address:
- SSL mode: เลือกตามต้องการ (โดยทั่วไปใช้
Prefer
หรือRequire
ปลอดภัยกว่า แต่ดีฟอลต์ ServBay อาจต้องตั้งAllow
หรือDisable
กรุณาอ้างอิงเอกสาร SSL ของ ServBay)
- General: กรอกชื่อการเชื่อมต่อ (เช่น
- คลิก
Save
เพื่อเชื่อมต่อกับฐานข้อมูล
พื้นฐานการจัดการฐานข้อมูล
เมื่อเชื่อมต่อเข้า PostgreSQL แล้ว คุณสามารถดำเนินการจัดการฐานข้อมูลต่างๆ ได้
แสดงรายการฐานข้อมูลและผู้ใช้
ใน psql
ใช้ meta command (ขึ้นต้นด้วย \
) เพื่อดูข้อมูลที่มีอยู่
- ดูรายการฐานข้อมูลทั้งหมด:sql
\l
1 - ดูรายการผู้ใช้ (role) ทั้งหมด:sql
\du
1
การสร้างฐานข้อมูลและผู้ใช้
คุณสามารถใช้คำสั่ง SQL ในการสร้างฐานข้อมูลและผู้ใช้ แล้วกำหนดสิทธิ์
สร้างฐานข้อมูลใหม่:
sqlCREATE DATABASE servbay_demo_db;
1แนะนำให้ใช้ชื่อฐานข้อมูลที่สื่อความหมายเกี่ยวกับโปรเจคของคุณ
สร้างผู้ใช้ใหม่ (role) พร้อมรหัสผ่าน:
sqlCREATE USER servbay_user WITH PASSWORD 'a_strong_password';
1เปลี่ยน
servbay_user
เป็นชื่อผู้ใช้ที่ต้องการ,a_strong_password
เป็นรหัสผ่านที่ปลอดภัยกำหนดสิทธิ์ให้ผู้ใช้:
sqlGRANT ALL PRIVILEGES ON DATABASE servbay_demo_db TO servbay_user;
1คำสั่งนี้ให้สิทธิ
servbay_user
ครบทุกอย่างในฐานข้อมูลservbay_demo_db
ควรเลือกให้สิทธิเท่าที่จำเป็นเพื่อความปลอดภัยตามแนวทางปฎิบัติที่ดี
วิธีรีเซ็ตรหัสผ่าน Root ของ PostgreSQL
หากคุณลืมรหัสผ่านผู้ใช้ root
(โดยปกติคือ postgres
) ServBay มีฟีเจอร์รีเซ็ตรหัสผ่านที่สะดวก สามารถทำได้จากอินเทอร์เฟซ ไม่จำเป็นต้องแก้ config หรือใช้คำสั่งที่ซับซ้อน ดูรายละเอียดในหน้า setting ของ PostgreSQL ใน ServBay
การสำรองข้อมูลและกู้คืนฐานข้อมูล
การสำรองข้อมูลเป็นหัวใจของความปลอดภัยในข้อมูล ใน ServBay คุณสามารถใช้เครื่องมือมาตรฐานของ PostgreSQL อย่าง pg_dump
& pg_restore
หรือใช้ฟีเจอร์สำรองข้อมูลที่รวมมาใน ServBay ก็ได้
วิธีสำรองข้อมูลด้วย pg_dump
pg_dump
ใช้สำหรับดึงเนื้อหาของฐานข้อมูล PostgreSQL ออกมา
แนะนำให้เก็บไฟล์สำรองในโฟลเดอร์แนะนำของ ServBay:
bash
/Applications/ServBay/backup/postgresql
1
ตัวอย่างสำรองฐานข้อมูลด้วย pg_dump
:
bash
pg_dump -U your_username -d your_database -F c -b -v -f /Applications/ServBay/backup/postgresql/your_database_backup.dump
1
-U your_username
: ระบุชื่อผู้ใช้ฐานข้อมูล-d your_database
: ระบุชื่อฐานข้อมูลที่ต้องการสำรอง-F c
: ส่งออกเป็นไฟล์ archive แบบ custom (แนะนำ รองรับการกู้คืนที่ยืดหยุ่น)-b
: รวม large objects (Blobs)-v
: ตรวจสอบสถานะการทำงาน (verbose mode)-f <filepath>
: ระบุ path และชื่อไฟล์สำรอง
วิธีกู้คืนด้วย pg_restore
pg_restore
ใช้สำหรับคืนค่าฐานข้อมูลจาก backup ที่สร้างด้วย pg_dump
bash
pg_restore -U your_username -d target_database -v /Applications/ServBay/backup/postgresql/your_database_backup.dump
1
-U your_username
: ระบุชื่อผู้ใช้ฐานข้อมูล-d target_database
: ระบุชื่อฐานข้อมูลปลายทาง (หากยังไม่มีสร้างใหม่ก่อน)-v
: แสดงรายละเอียดขณะกู้คืน<filepath>
: ระบุ path ไปยังไฟล์สำรองข้อมูล
ใช้ฟีเจอร์สำรองฐานข้อมูลใน ServBay
ServBay มีอินเทอร์เฟซกราฟิกและตัวเลือกอัตโนมัติให้คุณสำรองข้อมูลทั้งสภาพแวดล้อมโลคัล รวมถึงฐานข้อมูล PostgreSQL ได้ในคลิกเดียว
ฟีเจอร์สำรองข้อมูลใน ServBay รองรับ:
- สำรองข้อมูลด้วยตัวเอง: กดปุ่มสำรองใน UI สร้าง snapshot ปัจจุบัน
- สำรองข้อมูลอัตโนมัติ: ตั้งเวลาให้ ServBay สำรองข้อมูลอัตโนมัติเป็นประจำ
เนื้อหาที่ได้จาก backup รวมถึงตั้งค่าต่าง ๆ ของ ServBay, ไฟล์เว็บไซต์, ฐานข้อมูลทั้งหมด (รวม PostgreSQL), SSL Certificate ฯลฯ แนะนำให้ใช้ฟีเจอร์นี้คู่กับ manual backup เพื่อความมั่นใจในความปลอดภัยข้อมูล สามารถตั้งค่าจัดการได้ที่หน้า setting หรือหน้าหลัก ServBay
การเพิ่มประสิทธิภาพ (Performance Tuning)
เพื่อให้ PostgreSQL ทำงานได้เต็มประสิทธิภาพใน ServBay ควรพิจารณากลยุทธ์การจูนดังนี้
การใช้ดัชนี (Index)
ดัชนีช่วยให้ค้นข้อมูลรวดเร็วมากโดยเฉพาะกับตารางขนาดใหญ่หรือ column ที่ถูก query บ่อยๆ
ควรสร้างดัชนีกับ column ที่มักใช้ในเงื่อนไข query (WHERE), join (JOIN) หรือลำดับ (ORDER BY)
sql
CREATE INDEX idx_your_column_name ON your_table_name(your_column_name);
1
เปลี่ยน your_table_name
เป็นชื่อตาราง, your_column_name
เป็นชื่อ column, idx_your_column_name
เป็นชื่อ index ที่สื่อความหมาย
การจูนคิวรี (Query Tuning)
ใช้คำสั่ง EXPLAIN
เพื่อดูแผนการจัดการคิวรีของฐานข้อมูล วิเคราะห์หาคอขวดประสิทธิภาพ
sql
EXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1
ผลลัพธ์ของ EXPLAIN
จะบอกว่าสั่งของคุณใช้ดัชนีหรือไม่, ใช้วิธี join หรือ scan แบบไหน ฯลฯ ช่วยให้คุณวางแผนปรับ SQL หรือดัชนีได้
การจูนค่าคอนฟิก
การแก้ไฟล์ config (เช่น postgresql.conf
) จะช่วยจูนพารามิเตอร์ให้เหมาะกับฮาร์ดแวร์และลักษณะงาน
ตัวอย่างเช่นการตั้งค่า shared_buffers
กำหนดขนาดแรมที่ PostgreSQL ใช้เก็บ cache ช่วยลด I/O ดิสก์ เพิ่มประสิทธิภาพ (แต่ไม่ควรตั้งเกินแรมที่ระบบมี)
ini
# ตัวอย่างใน postgresql.conf
shared_buffers = 1GB # ปรับตามขนาดแรมและลักษณะโหลดงาน
1
2
2
หลังปรับ config ต้อง restart PostgreSQL เพื่อให้ค่ามีผล กรุณาดูวิธีทำที่เอกสารการตั้งค่าใน ServBay
การจัดการความปลอดภัย
การดูแลความปลอดภัยฐานข้อมูลมีความสำคัญมาก โดยเฉพาะเมื่อมีข้อมูลสำคัญในสภาพแวดล้อมการพัฒนา
การตั้งรหัสผ่านที่แข็งแรง
ควรกำหนดรหัสผ่านให้ซับซ้อนและไม่ซ้ำสำหรับทุกบัญชี โดยเฉพาะบัญชีที่มีสิทธิสูงอย่าง postgres
และควรเปลี่ยนรหัสผ่านอยู่สม่ำเสมอ
sql
ALTER USER your_username WITH PASSWORD 'your_new_strong_password';
1
การสำรองข้อมูลอย่างสม่ำเสมอ
ดังที่กล่าวข้างต้น การสำรองข้อมูลอย่างสม่ำเสมอคือหัวใจของการป้องกันข้อมูลสูญหาย ควรใช้ทั้งฟีเจอร์ backup ของ ServBay ควบคู่กับกลยุทธ์ manual เช่น pg_dump
จำกัดสิทธิ์ผู้ใช้
ยึดหลัก Least Privilege ไม่ให้สิทธิ์เกินความจำเป็นแก่ผู้ใช้ ไม่ควรใช้ ALL PRIVILEGES
กับทุก user
sql
-- ยกเลิกสิทธิ์ทั้งหมดของผู้ใช้ในฐานข้อมูล
REVOKE ALL PRIVILEGES ON DATABASE mydatabase FROM your_username;
-- ให้สิทธิ์เฉพาะ CONNECT และสร้าง TEMP table
GRANT CONNECT, TEMPORARY ON DATABASE mydatabase TO your_username;
-- ให้สิทธิ์ SELECT, INSERT, UPDATE, DELETE เฉพาะในบางตาราง
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE your_table_name TO your_username;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
การควบคุมการเข้าถึงผ่านเครือข่าย
ค่าเริ่มต้นของ ServBay มักจะผูกบริการฐานข้อมูลกับ localhost (localhost
หรือ 127.0.0.1
) เพื่อไม่ให้เข้าจากเครือข่ายภายนอก ซึ่งช่วยเพิ่มความปลอดภัย เว้นแต่จำเป็นมากและทราบความเสี่ยง ไม่ควรเปิดฐานข้อมูลให้เชื่อมต่อนอกเครื่อง
ปัญหาที่พบบ่อยและแนวทางแก้ไข
ไม่สามารถเชื่อมต่อกับ PostgreSQL
- ตรวจสอบว่าบริการ PostgreSQL ทำงานอยู่หรือไม่: ใช้ ServBay UI หรือรันคำสั่ง
servbayctl status postgresql <version>
เพื่อตรวจสอบ ถ้าไม่รันให้สตาร์ทก่อน - ตรวจสอบพารามิเตอร์การเชื่อมต่อ: ยืนยันว่า username, password, ชื่อฐานข้อมูล, hostname (
localhost
หรือ/Applications/ServBay/tmp
) และ port (5432
) ที่ใช้ถูกต้อง โดยเฉพาะ credential ต้องตรงตามที่ระบุใน ServBay UI - ตรวจสอบ log ของ ServBay: ดู log ของ ServBay เพื่อหาข้อความ error เกี่ยวกับ PostgreSQL จะช่วยหาสาเหตุที่เชื่อมต่อไม่ได้
- ตรวจดูไฟร์วอลล์: แม้ค่าเริ่มต้นของ ServBay จะไม่ปัญหากับ firewall แต่หากคุณใช้ความปลอดภัยเฉพาะบนระบบ ตรวจสอบให้แน่ใจว่า PostgreSQL ใน ServBay สามารถเชื่อมต่อผ่าน local ได้
ปัญหาสิทธิ์ (Permission Denied)
เมื่อรันคำสั่งแล้วพบว่าไม่มีสิทธิ์ (Permission Denied) บ่อยครั้งเป็นเพราะ user นั้นไม่ได้รับสิทธิ์ที่เหมาะสม
- เช็คสิทธิ์ของ user ปัจจุบัน: ใน
psql
ใช้\du
เพื่อดู user & property ใช้\dp <table_name>
ดูสิทธิ์บนแต่ละ table - ให้สิทธิ์ที่จำเป็น: ล็อกอินด้วย user ที่มีสิทธิ์สูง (เช่น postgres) แล้วใช้คำสั่ง
GRANT
ให้ user ที่ต้องการsqlGRANT ALL PRIVILEGES ON DATABASE mydatabase TO your_username; -- สิทธิระดับฐานข้อมูล GRANT SELECT ON TABLE your_table_name TO your_username; -- สิทธิระดับตาราง
1
2
สรุป
PostgreSQL เป็นระบบฐานข้อมูลที่ทรงพลังและยืดหยุ่น ServBay ได้ช่วยให้งานติดตั้งและบริหาร PostgreSQL บน macOS ง่ายขึ้นมาก ด้วยคู่มือนี้คุณจะสามารถติดตั้ง ตั้งค่า เชื่อมต่อ จัดการฐานข้อมูลหลัก ใช้ฟีเจอร์สำรองข้อมูลของ ServBay รวมถึงสำรองและกู้คืนด้วยตนเอง เพิ่มประสิทธิภาพระบบ และเสริมความปลอดภัยได้อย่างมั่นใจ ทักษะเหล่านี้จะช่วยให้การพัฒนาเว็บแบบโลคัลของคุณมีประสิทธิภาพและปลอดภัยมากยิ่งขึ้น