คู่มือการแก้ไขปัญหา PostgreSQL บน ServBay
PostgreSQL คือระบบฐานข้อมูลเชิงสัมพันธ์แบบออบเจกต์โอเพ่นซอร์สที่ทรงพลังและรองรับฟีเจอร์หลากหลาย ได้รับความนิยมอย่างแพร่หลายในงานเว็บและการจัดเก็บข้อมูล สำหรับ ServBay ฐานข้อมูล PostgreSQL ถือเป็นหนึ่งในแพ็กเกจหลักของสภาพแวดล้อมการพัฒนาแบบโลคัลที่มีเสถียรภาพสูง แต่ในบางกรณี คุณอาจพบปัญหา เช่น ไม่สามารถเริ่มต้นใช้งาน การเชื่อมต่อล้มเหลว ประสิทธิภาพลดลง หรือข้อมูลผิดปกติ
บทความนี้จัดทำขึ้นเพื่อเป็นคู่มือแก้ไขปัญหา PostgreSQL สำหรับนักพัฒนาที่ใช้งาน ServBay โดยจะอธิบายสาเหตุที่พบบ่อย ขั้นตอนการวินิจฉัย และแนวทางแก้ไขอย่างละเอียด ServBay รองรับทั้งบน macOS และ Windows และสามารถติดตั้ง PostgreSQL ได้หลายเวอร์ชัน ในบางขั้นตอน คุณอาจต้องระบุเวอร์ชัน ไฟล์ config หรือเส้นทางไดเรกทอรีของข้อมูล
ภาพรวม
คู่มือนี้เน้นการจัดการและแก้ไขปัญหาทางเทคนิคที่อาจเกิดขึ้นกับแพ็กเกจ PostgreSQL บน ServBay โดยเริ่มตั้งแต่ปัญหาการเริ่มต้นใช้งานและการเชื่อมต่อ ไปจนถึงปัญหาเชิงลึก อาทิ คอขวดด้านประสิทธิภาพ ฐานข้อมูลล่ม การสำรองและกู้คืนข้อมูล หากคุณทำตามขั้นตอนในบทความนี้ จะสามารถวินิจฉัยและจัดการกับปัญหาส่วนใหญ่ที่เกี่ยวข้องกับ PostgreSQL ได้อย่างเป็นระบบ
เงื่อนไขเบื้องต้น
ก่อนเริ่มการแก้ไขปัญหา โปรดตรวจสอบให้แน่ใจว่า:
- ได้ติดตั้งและเปิดใช้งาน ServBay แล้ว
- ได้ติดตั้งแพ็กเกจ PostgreSQL ที่ต้องการแก้ไขผ่าน ServBay
- มีพื้นฐานการใช้งานคอมมานด์ไลน์
- ทราบเส้นทางไฟล์ config และไดเรกทอรีข้อมูลของ PostgreSQL ที่กำลังใช้งาน
- macOS:
/Applications/ServBay/db/postgresql/<version>
- Windows:
C:\ServBay\db\postgresql\<version>
- macOS:
- ทราบชื่อฐานข้อมูล, ชื่อผู้ใช้งาน และรหัสผ่านที่ต้องการเชื่อมต่อ
ปัญหาที่พบบ่อยพร้อมแนวทางแก้ไข
1. ไม่สามารถเริ่มต้นใช้งานแพ็กเกจ PostgreSQL
หากคุณเริ่มต้นใช้งาน PostgreSQL ผ่าน ServBay แล้วสถานะยังแสดงว่า "หยุด" หรือ "เริ่มต้นไม่สำเร็จ" สาเหตุอาจเกิดจาก:
สาเหตุที่เป็นไปได้
- ไฟล์ config มีข้อผิดพลาดทางไวยากรณ์ หรือการตั้งค่าขัดแย้งกัน
- พอร์ตที่ใช้โดย PostgreSQL (ค่าเริ่มต้นคือ 5432) ถูกใช้โดยโปรแกรมอื่น
- ServBay หรือ PostgreSQL ไม่มีสิทธิ์อ่าน/เขียนที่จำเป็นในไดเรกทอรีข้อมูลหรือไฟล์ config
- ไดเรกทอรีข้อมูล PostgreSQL เสียหาย
- ปัญหาภายในระบบจัดการของ ServBay
วิธีแก้ไข
- ตรวจสอบสถานะและ log ผ่าน GUI ServBay: เปิดแอป ServBay และดูสถานะแพ็กเกจ PostgreSQL หากผิดปกติ ลองเริ่มต้นผ่าน GUI ด้วยตนเอง แล้วตรวจดู log หลักของ ServBay หรือ log เฉพาะของ PostgreSQL
ตำแหน่ง log file:
- macOS:
/Applications/ServBay/logs/postgresql/<version>/postgresql-<version>.log
- Windows:
C:\ServBay\logs\postgresql\<version>\postgresql-<version>.log
- ตรวจสอบไฟล์ config: ไฟล์ config หลักของ PostgreSQL คือ
postgresql.conf
ตรวจสอบให้แน่ใจว่าไวยากรณ์ถูกต้อง ไม่มีคำผิดหรือค่าที่ไม่รองรับ
ตำแหน่ง config (ตัวอย่าง PostgreSQL 13):
- macOS:
/Applications/ServBay/db/postgresql/13/postgresql.conf
- Windows:
C:\ServBay\db\postgresql\13\postgresql.conf
อีกไฟล์สำคัญคือ pg_hba.conf
(ควบคุมการรับรองตัวตน) ซึ่งถ้าตั้งค่าผิดอาจส่งผลทั้งเรื่องการเชื่อมต่อและการเริ่มต้นใช้งาน โดยตำแหน่งไฟล์นี้จะอยู่ที่เดียวกันกับ postgresql.conf
ถึงแม้ PostgreSQL ไม่มีเครื่องมือ command-line สำหรับ “ตรวจสอบไวยากรณ์” config โดยตรง คุณสามารถตรวจสอบจาก log หรือเชื่อมต่อกับฐานข้อมูลที่กำลังทำงาน (อาจเป็นเวอร์ชันหรืออินสแตนซ์อื่น) หรือใช้คำสั่ง SQL เหล่านี้เมื่อตั้งค่าได้แล้ว:
```sql
-- ต้องเชื่อมต่อกับฐานข้อมูลก่อน
SELECT * FROM pg_hba_file_rules();
```
ตรวจสอบข้อผิดพลาดในการโหลดไฟล์ config ด้วย:
```sql
-- ต้องเชื่อมต่อกับฐานข้อมูลก่อน
SELECT sourcefile, name, sourceline, error FROM pg_file_settings WHERE error IS NOT null;
```
**หมายเหตุ:** คำสั่ง SQL เหล่านี้ใช้ได้เมื่อฐานข้อมูลเปิดใช้งานแล้ว ถ้า *ไม่สามารถเริ่มต้นใช้งาน* ให้เน้นตรวจสอบที่ log เป็นหลัก
- ตรวจสอบการใช้พอร์ต: PostgreSQL จะรับฟังที่พอร์ต 5432 โดยค่าเริ่มต้น หากมีโปรแกรมอื่นใช้พอร์ตนี้ จะไม่สามารถเริ่มต้นใช้งานได้
ตรวจสอบพอร์ต:
macOS:
bash
lsof -i :5432
1
Windows:
cmd
netstat -an | findstr :5432
# หรือใช้ PowerShell
Get-NetTCPConnection -LocalPort 5432
1
2
3
2
3
หากมีผลลัพธ์แสดงว่าพอร์ต 5432 ถูกใช้งานแล้ว คุณสามารถดู PID ของโปรเซสที่ใช้งาน และหยุดโปรเซสนั้น หรือตั้งค่าให้ PostgreSQL ใช้พอร์ตอื่น (แก้ไขที่ postgresql.conf
แล้วรีโหลดหรือรีสตาร์ทผ่าน ServBay GUI หรือ servbayctl
)
- ตรวจสอบสิทธิ์ในไฟล์และไดเรกทอรี: ServBay ต้องมีสิทธิ์ในการอ่าน/เขียนไดเรกทอรีหลักและไฟล์ต่าง ๆ PostgreSQL และไฟล์ config เช่นกัน โดย ServBay มักจะเปิดภายใต้บัญชีผู้ใช้งานของคุณเอง ดังนั้นให้ตรวจสอบสิทธิ์ว่าไดเรกทอรี
/Applications/ServBay/
สามารถเขียนได้
ตรวจสอบสิทธิ์:
macOS:
bash
ls -ld /Applications/ServBay/db/postgresql/13 # ตรวจสอบสิทธิ์ data directory
ls -l /Applications/ServBay/db/postgresql/13/postgresql.conf # ตรวจสอบสิทธิ์ config file
ls -l /Applications/ServBay/db/postgresql/13/pg_hba.conf # ตรวจสอบสิทธิ์ไฟล์รับรองตัวตน
1
2
3
2
3
Windows: ตรวจสอบผ่าน File Explorer ว่าบัญชีที่ใช้เปิด ServBay มีสิทธิ์อ่าน/เขียนที่ไดเรกทอรีและไฟล์ที่เกี่ยวข้อง
ถ้าพบสิทธิ์ผิดปกติ อาจต้องใช้ `chmod` หรือ `chown` แก้ไข (แต่โดยทั่วไป ไม่ควรแก้ไขสิทธิ์เอง เนื่องจาก ServBay จะตั้งค่าอัตโนมัติ หากผิดปกติอาจเกิดจากการติดตั้งไม่สมบูรณ์ หรือไฟล์ถูกปรับเปลี่ยนโดยไม่ตั้งใจ)
ตรวจสอบไดเรกทอรีข้อมูลเสียหาย: ไดเรกทอรีข้อมูลของ PostgreSQL ครอบคลุมทุกไฟล์ฐานข้อมูล หากเกิดความเสียหาย เช่น เครื่องดับกะทันหัน หรือข้อผิดพลาดของดิสก์ อาจทำให้เริ่มต้นใช้งานไม่ได้ ตรวจสอบ log เพื่อหาเบาะแส อาจจำเป็นต้องใช้เครื่องมือ เช่น
pg_resetwal
ในการกู้คืน (แต่ใช้ด้วยความระมัดระวังและควร backup ก่อนเสมอ)รีสตาร์ทผ่านคำสั่ง ServBay: หลังตรวจสอบทุกข้อข้างต้น ให้ลองรีสตาร์ทแพ็กเกจผ่าน command-line tool ของ ServBay ระบุตัวเลขเวอร์ชัน:
bashservbayctl restart postgresql 13
1หรือสั่งงานผ่าน ServBay GUI
2. ไม่สามารถเชื่อมต่อกับ PostgreSQL
แม้ PostgreSQL จะแสดงสถานะ “ทำงาน” คุณอาจยังเชื่อมต่อผ่านโปรแกรม เช่น psql
, pgAdmin
หรือโค้ดโปรแกรมไม่ได้
สาเหตุที่เป็นไปได้
- PostgreSQL จริง ๆ อาจยังไม่เปิดใช้งานสมบูรณ์ หรือผิดปกติ
- การตั้งค่า
pg_hba.conf
ไม่อนุญาตการเชื่อมต่อของคุณ - ติด firewall
- พารามิเตอร์การเชื่อมต่อ เช่น host, port, db name, username, password ผิด
- ผู้ใช้ไม่มีสิทธิ์เชื่อมต่อกับฐานข้อมูลที่กำหนด
วิธีแก้ไข
ตรวจสอบสถานะผ่าน GUI หรือ
servbayctl
: ยืนยันอีกครั้งว่า PostgreSQL อยู่สถานะ “ทำงาน” ถ้าไม่ ให้กลับไปวินิจฉัยหัวข้อ “ไม่สามารถเริ่มต้นใช้งานแพ็กเกจ” ใช้servbayctl
ตรวจสอบสถานะได้เช่นกัน:bashservbayctl status postgresql 13
1ผลลัพธ์ควรบอกว่าทำงานอยู่
ตรวจสอบการตั้งค่าใน
pg_hba.conf
:pg_hba.conf
กำหนดว่า host/user/database ไหนสามารถเชื่อมต่อด้วยวิธีใด มักจะต้องอนุญาตให้localhost
หรือ127.0.0.1
เชื่อมต่อสำหรับการพัฒนาแบบโลคัล
ตำแหน่งไฟล์:
macOS:
/Applications/ServBay/db/postgresql/13/pg_hba.conf
Windows:
C:\ServBay\db\postgresql\13\pg_hba.conf
ตัวอย่างการอนุญาต user 'servbay-demo' เข้าถึงทุก database จาก localhost ด้วย md5:
ini# TYPE DATABASE USER ADDRESS METHOD host all servbay-demo 127.0.0.1/32 md5 host all servbay-demo ::1/128 md5
1
2
3แก้ไขแล้วต้อง reload config โดยไม่ต้อง restart:
bashservbayctl reload postgresql 13
1หรือสั่งงานผ่าน ServBay GUI
- ตรวจสอบ firewall:macOS:
bash
# เพิ่มแอปเข้าลิสต์อนุญาต
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/postgres
# ยกเลิกบล็อกแอป
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/postgres
1
2
3
4
2
3
4
Windows: ตรวจสอบใน Windows Defender หรือ firewall อื่น เพิ่มกฎอนุญาตแอปหรือพอร์ต:
cmd
# Allow specific program
netsh advfirewall firewall add rule name="ServBay PostgreSQL" dir=in action=allow program="C:\ServBay\bin\postgresql\<version>\bin\postgres.exe"
1
2
2
ตรวจสอบพารามิเตอร์การเชื่อมต่อและสิทธิ์ผู้ใช้: ตรวจสอบ host (โดยทั่วไป
localhost
หรือ127.0.0.1
), port (5432), database, username, password ให้ถูกต้อง ทดสอบด้วยpsql
ก็ช่วยวินิจฉัยปัญหาได้ดี:bashpsql -U your_username -d your_database -h localhost -p 5432
1เปลี่ยน
your_username
และyour_database
ให้ตรงกับที่ใช้งาน หากเชื่อมต่อได้จะเห็น prompt ของpsql
ถ้าไม่ได้อาจมีข้อความชี้สาเหตุ (เช่น password ผิด, ฐานข้อมูลไม่มี, ไม่มีสิทธิ์)หากเชื่อมต่อไปที่ database ได้แต่ใช้งานบาง table/database ไม่ได้ อาจเกิดจากสิทธิ์ผู้ใช้ ดูสิทธิ์ใน
psql
ด้วย:sql-- ใน command-line psql \du
1
2อาจต้องใช้ผู้ใช้ที่มีสิทธิ์สูง (เช่น postgres) ในการมอบสิทธิ์ผ่าน
GRANT
ให้ user ที่ต้องการ
3. ประสิทธิภาพช้า
PostgreSQL เปิดใช้งานและเชื่อมต่อได้ แต่เมื่อรัน query แล้วผลลัพธ์ช้า อาจเกิดจากปัญหาประสิทธิภาพ
สาเหตุที่เป็นไปได้
- query SQL ไม่เหมาะสม
- โครงสร้างฐานข้อมูล (schema/data model) ไม่ดี
- ตั้งค่าพารามิเตอร์ cache/memory ผิด
- ขาด index ที่จำเป็น
- ข้อจำกัดของ hardware (CPU, RAM, disk I/O)
- ข้อมูลสถิติในฐานข้อมูลล้าสมัย
วิธีแก้ไข
วิเคราะห์และปรับ query: ใช้คำสั่ง
EXPLAIN
หรือEXPLAIN ANALYZE
เพื่อดูแผนการทำงานของ query และชี้จุด bottlenecksql-- ใน psql หรือ SQL client EXPLAIN ANALYZE SELECT * FROM your_table_name WHERE column_name = 'value';
1
2ดูผลลัพธ์เพื่อปรับ query และสร้าง index ที่เหมาะสม
ปรับพารามิเตอร์ใน config PostgreSQL: พารามิเตอร์สำคัญใน
postgresql.conf
ได้แก่shared_buffers
: ขนาด RAM สำหรับ cache ฐานข้อมูล, ค่ามากขึ้นช่วยเพิ่มประสิทธิภาพแต่ไม่ควรเกิน ~25% ของ RAM ทั้งระบบwork_mem
: ขนาด RAM สำหรับการ sort/hash ของ query เพิ่มค่านี้ถ้า query ใช้การ sort/hash มาก
ปรับให้เหมาะกับเครื่องและงาน โดยต้อง reload/restart เพื่อให้มีผล
ini# ตัวอย่างสำหรับเครื่อง RAM 4GB shared_buffers = 1GB work_mem = 64MB
1
2
3สร้าง index ให้เหมาะสม: สร้าง index สำหรับ column ที่ใช้ใน WHERE, JOIN และ ORDER BY โดยใช้
EXPLAIN
เพื่อช่วยตัดสินใจsql-- ตัวอย่างสร้าง index CREATE INDEX idx_column_name ON your_table_name(column_name);
1
2อย่าสร้าง index มากเกินจำเป็น เพราะจะเพิ่ม overhead ในการเขียนและใช้พื้นที่
อัปเดตข้อมูลสถิติ (ANALYZE): query optimizer จะสร้างแผน query จากข้อมูลสถิติ ถ้าข้อมูลเปลี่ยนบ่อยควรรัน ANALYZE
sql-- วิเคราะห์ทั้งฐานข้อมูล ANALYZE; -- วิเคราะห์เฉพาะ table ANALYZE your_table_name;
1
2
3
4โดยทั่วไป ServBay จะตั้งค่า auto-analyze ไว้แล้ว แต่การ ANALYZE เองมีประโยชน์ตอนวินิจฉัย performance
ตรวจสอบ hardware system: แม้ ServBay จะเป็น local dev แต่หากฐานข้อมูลใหญ่หรือ query หนัก อาจติดคอขวด hardware ตรวจสอบได้ด้วย Activity Monitor ใน macOS
4. ฐานข้อมูลล่ม
PostgreSQL หยุดการทำงานหรือไม่ตอบสนอง อาจเกิดจากการล่ม
สาเหตุที่เป็นไปได้
- hardware มีปัญหา เช่น RAM, disk
- ระบบปฏิบัติการ หรือข้อจำกัด resource
- bug ใน PostgreSQL (พบได้น้อย ยกเว้นเวอร์ชันหรือสถานการณ์เฉพาะ)
- ไดเรกทอรีข้อมูลเสียหาย
- config ผิดจน resource หมด (เช่น max connections มากไป)
วิธีแก้ไข
- ตรวจสอบ error log ของ PostgreSQL: log เก็บรายละเอียดปัญหาเมื่อเกิด crash
ตำแหน่งไฟล์ log:
- macOS:
/Applications/ServBay/logs/postgresql/<version>/postgresql-<version>.log
- Windows:
C:\ServBay\logs\postgresql\<version>\postgresql-<version>.log
ค้นหา keyword FATAL
หรือ ERROR
โดยเน้นเวลาที่เกิดเหตุการณ์ log จะชี้สาเหตุเช่น memory/disk ผิดปกติ
ตรวจสอบ log ของระบบปฏิบัติการ: ใน macOS ใช้ Console ดู log ของระบบ เพื่อหาสาเหตุฮาร์ดแวร์หรือระบบปฏิบัติการ
ตรวจสอบสุขภาพ hardware: ใช้เครื่องมือ built-in หรือ third-party ของ macOS เพื่อตรวจสอบ RAM และ disk ว่าทำงานปกติหรือไม่
ซ่อมแซมหรือสร้างไดเรกทอรีข้อมูลใหม่ (ทำด้วยความระวัง): หาก log แจ้งว่าข้อมูลเสียหาย อาจต้องใช้ tool พิเศษแบบ
pg_resetwal
(มีความเสี่ยงสูง อาจเสียข้อมูล ใช้ในกรณียอมรับการสูญเสีย)วิธีที่แนะนำและปลอดภัยกว่า: a. สำรองข้อมูลเดิม: แม้จะเสียหายก็ควร backup ก่อน b. สร้าง data directory ใหม่: หยุด PostgreSQL เปลี่ยนชื่อ/ย้ายไดเรกทอรีเดิม แล้วรัน
initdb
หรือ reinstall package ผ่าน ServBay เพื่อสร้าง directory ใหม่ c. กู้ข้อมูลจาก backup ล่าสุด: restore ด้วยpg_restore
หรือpsql
จากไฟล์สำรองกู้ข้อมูลจาก backup: หาก data directory เสียหายไม่สามารถซ่อมแซม หรืออยากย้อนเวลากลับไปก่อน crash ให้กู้ข้อมูลจาก backup ของ ServBay (อัตโนมัติหรือด้วยมือ)
ตำแหน่งไฟล์ backup:
- macOS:
/Applications/ServBay/backup/postgresql/<version>/
- Windows:
C:\ServBay\backup\postgresql\<version>\
- macOS:
5. ปัญหาการสำรองข้อมูลและกู้คืน
ServBay รองรับการสำรองข้อมูลและกู้คืนทั้งแบบ manual และ automatic หากเกิดปัญหาระหว่าง backup หรือ restore ให้ดูวิธีแก้ไขนี้
สาเหตุที่เป็นไปได้
- ไฟล์ backup เสียหายหรือไม่สมบูรณ์
- ใช้คำสั่งหรือพารามิเตอร์ผิดในการ restore
- ไม่มี database เป้าหมาย หรือ user ขาดสิทธิ์
- พื้นที่ disk ไม่พอ
- ถูกขัดจังหวะระหว่าง backup/restore
วิธีแก้ไข
- ตรวจสอบความสมบูรณ์ของ backup: ตรวจสอบขนาดไฟล์ (สร้างด้วย
pg_dump
หรือฟีเจอร์ใน ServBay) ว่าถูกต้องและสมบูรณ์หรือไม่ ดู header–footer ของไฟล์ text หรือให้pg_restore
รายงาน error กรณี backup แบบ custom/directory
ตำแหน่ง file backup:
- macOS:
/Applications/ServBay/backup/postgresql/13/your_backup_file.dump
- Windows:
C:\ServBay\backup\postgresql\13\your_backup_file.dump
ดูขนาดไฟล์:
- macOS:
ls -lh /Applications/ServBay/backup/postgresql/13/your_backup_file.dump
- Windows:
dir C:\ServBay\backup\postgresql\13\your_backup_file.dump
ใช้คำสั่ง restore ให้ถูกต้อง (
pg_restore
หรือpsql
): เลือกคำสั่งตาม format ของไฟล์ backup- ถ้าเป็นไฟล์ text (
pg_dump -Fp
หรือไม่ระบุ format): ใช้psql
restorebashฐานข้อมูลเป้าหมายต้องมีอยู่แล้วpsql -U your_username -d your_database -h localhost -p 5432 -f /path/to/your_backup_file.sql
1 - ถ้าเป็น custom format (
-Fc
) หรือ directory format (-Fd
): ใช้pg_restore
bashdatabase เป้าหมายต้องมีอยู่ก่อน โดยpg_restore -U your_username -d your_database -h localhost -p 5432 /path/to/your_backup_file.dump
1pg_restore
ยังเลือก restore เฉพาะส่วนได้
User ที่ใช้ต้องมีสิทธิ์สร้าง object ใน database (ควรใช้ owner หรือ superuser เช่น postgres)
- ถ้าเป็นไฟล์ text (
ตรวจสอบการมีอยู่ของ database เป้าหมาย: ไม่ว่าคุณจะใช้
psql -f
หรือpg_restore
ฐานข้อมูลต้องถูกสร้างไว้ก่อน restore:bashcreatedb -U your_username -h localhost -p 5432 your_database
1หรือสร้างผ่าน ServBay GUI หรือเครื่องมือจัดการอื่น
ตรวจสอบพื้นที่ disk: การ restore ข้อมูลขนาดใหญ่จะใช้ disk มาก ตรวจสอบให้ macOS มีพื้นที่ว่างพอ
ตรวจสอบ config และ log การสำรองข้อมูลของ ServBay: หากเกิดปัญหากับการสำรองแบบอัตโนมัติ ให้เช็ค config และ log ของ ServBay โดยละเอียด เพื่อหาสาเหตุเพิ่มเติม ServBay สามารถตั้งเวลา backup, เป้าหมาย และนโยบาย retention ได้
คำถามที่พบบ่อย (FAQ)
ถาม: จะดูตำแหน่ง data directory ของ PostgreSQL ใน ServBay ได้อย่างไร? ตอบ: ตำแหน่งไดเรกทอรีข้อมูล PostgreSQL คือ:
- macOS:
/Applications/ServBay/db/postgresql/<version>/data
- Windows:
C:\ServBay\db\postgresql\<version>\data
ตำแหน่งไฟล์ config:
- macOS:
/Applications/ServBay/db/postgresql/<version>/
- Windows:
C:\ServBay\db\postgresql\<version>\
- macOS:
ถาม: จะรีเซ็ตรหัสผ่านผู้ใช้ postgres ในแพ็กเกจ PostgreSQL บน ServBay ได้อย่างไร? ตอบ: หากลืมรหัสผ่าน superuser postgres หรืออยากตั้งใหม่ ให้ทำตามขั้นตอนนี้ (ต้องใช้การเชื่อมต่อแบบ trust หรือมี superuser อื่น):
ปิด PostgreSQL ผ่าน ServBay
แก้ไขไฟล์
pg_hba.conf
ให้การเชื่อมต่อแบบ local ใช้trust
(อนุญาตเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน)- macOS:
/Applications/ServBay/db/postgresql/13/pg_hba.conf
- Windows:
C:\ServBay\db\postgresql\13\pg_hba.conf
ค้นหา lines ที่เกี่ยวข้องเช่น:
ini# TYPE DATABASE USER ADDRESS METHOD local all all peer # or md5 host all all 127.0.0.1/32 md5 # หรือ scram-sha-256
1
2
3แก้เป็น:
ini# TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust
1
2
3
4- macOS:
เปิด PostgreSQL ผ่าน ServBay
ใช้ psql เชื่อมต่อฐานข้อมูลโดยไม่ใช้รหัสผ่าน:
bashpsql -U postgres -h localhost -p 5432
1ใน psql ใช้ ALTER USER เปลี่ยนรหัสผ่าน:
sqlALTER USER postgres PASSWORD 'new_secure_password';
1เปลี่ยน
'new_secure_password'
เป็นรหัสที่ต้องการ สำหรับ user อื่นให้เปลี่ยนชื่อใช้
\q
ออกจาก psqlสำคัญ: ปิด PostgreSQL และเปลี่ยน config ให้กลับมาใช้วิธียืนยันตัวตนที่ปลอดภัย (เช่น md5 หรือ scram-sha-256) แล้วเปิด PostgreSQL ผ่าน ServBay อีกครั้ง
ถาม: ServBay รองรับ high availability หรือ replication ของ PostgreSQL หรือไม่? ตอบ: ServBay ถูกออกแบบเพื่อการพัฒนาแบบ local และจัดการแพ็กเกจฐานข้อมูลอย่างสะดวก ไม่รองรับการจัดการผ่าน GUI สำหรับ HA หรือ replication ในระดับ production คุณสามารถตั้งค่าการ replication ใน PostgreSQL ได้ด้วยตัวเองแต่ต้องเชี่ยวชาญการ config และใช้ command line
ถาม: จะอัปเกรดเวอร์ชัน PostgreSQL ใน ServBay ได้อย่างไร? ตอบ: ServBay สามารถติดตั้งหลายเวอร์ชันของ PostgreSQL ได้ หากต้องการอัปเกรด ให้ติดตั้งเวอร์ชันใหม่ แล้ว migrate ข้อมูลด้วย
pg_upgrade
ซึ่งต้องหยุด service ทั้งสองเวอร์ชัน ใช้pg_upgrade
แล้วย้ายข้อมูลไป data directory ใหม่ ก่อนเปิดใช้งานเวอร์ชันใหม่ ดูขั้นตอนจากเอกสารอย่างเป็นทางการ PostgreSQL ServBay จะเก็บ data directory ของแต่ละเวอร์ชันแยกอิสระเพื่อความสะดวกในการอัปเกรดและจัดการ