PostgreSQL โปรโมทว่าเป็น advanced open-source database application platform และ Debian Linux มี packages เยอะมากทำให้ซับซ้อนขึ้น ยังมี packages โหลดสำหรับ PostgreSQL บน Ubuntu Server และ Ubuntu spins ต่างๆ (based on Debian core) ความซับซ้อนนี้ทำให้ warning “could not connect to server” และ “no such file or directory” ระรำเพื่อนกว่าเดิม
โชคดีที่มักเป็น permission problems แค่เพราะ PostgreSQL ต้องการ user ชื่อ postgres ถือครอง directories เหล่านี้ ด้วย command line trick ง่ายๆ แก้ได้ทันที แต่ควรผ่าน basic diagnostic checks ก่อน เพื่อยืนยันว่าเป็นปัญหานี้จริง
แก้ PostgreSQL Could Not Connect to Server Errors
ก่อนอื่น ลอง restart PostgreSQL system manually บางครั้งเพียงพอ ถ้าไม่ ให้ได้ error message มาทำงานต่อ มากที่สุดคือ restart system ด้วย psql command as postgres user
อาจแก้หมดแล้ว ไม่เช่นนั้น อาจได้ “psql: could not connect to server: No such file or directory” แสดงว่าเป็น permission problems ถ้าได้ error นี้ จะมี text อื่นมาด้วย
เช็ค service status ถ้าได้ message นี้ เพื่อแน่ใจว่า modules loaded ควร loaded แล้ว แต่ถ้าไม่ ให้ restart ลอง sudo service postgresql restart restart เร็วๆ ดูว่าซ่อมได้ไหม ปกติไม่ได้ แต่อาจลองดู
สมมติไม่ช่วย ดูใน PostgreSQL log หา errors กรณีหายาก อาจเจอ package errors หมายถึงขาด SQL modules ไป ไม่ใช่สาเหตุหลักแต่อาจเป็นได้ ต้องเช็คดู อย่างไรก็ตาม ส่วนใหญ่จะเจอ warning ว่า “Permissions should be u=rwx (0700)” และ “data directory “/var/lib/postgresql/9.6/main” has group or world access” (version number อาจต่างไปตาม SQL server)
เพราะ Debian และ distributions คล้ายๆ คาดหวังว่า postgres user และ group ควบคุม directories ด้วย 0700 permissions และ files ทั้งหมด 0600 permissions เพื่อ security ทำได้แค่รันคำสั่งนี้ที่ terminal:
sudo chown -R postgres:postgres /var/lib/postgresql/9.6/ && sudo chmod -R u=rwX,go= /var/lib/postgresql/9.6/
จำไว้ ต้องเป็น upper-case X ไม่ใช่ lower-case x ตามปกติ เพราะวิธีตั้งค่า file permission options เฉพาะ ต้องการ root access แต่ sudo สองตัวพอให้ permissions ตอนรันเป็น regular user สำคัญเพราะ Ubuntu และ Linux spins ต่างๆ hash out main root account ต้องทำแบบนี้
คำสั่งเสร็จ restart service อีกครั้ง sudo service postgresql restart จาก terminal ไม่ควรมี errors แล้ว ถ้าดู log warnings เกี่ยว permission problems ควรหายไป
Error นี้เกิดจากเงื่อนไขเฉพาะพอสมควร หลังแก้ครั้งแรกไม่ควรเจออีก ถ้าไม่พยายาม manually ทำอะไรกับ permissions ของ PostgreSQL directories ไม่มีสถานการณ์ที่จำเป็นนอกจากแก้ปัญหาครั้งแรก
ABOUT THE AUTHOR

Kevin Arrows
Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์มากกว่า 10 ปี ได้รับการรับรอง Microsoft Certified Technology Specialist (MCTS) มีความหลงใหลในการอัปเดตเทคโนโลยีล่าสุด เขียนบทความเกี่ยวกับหัวข้อเทคโนโลยีกว้างขวาง แสดงความเชี่ยวชาญในด้านการพัฒนาซอฟต์แวร์ ความปลอดภัยไซเบอร์ และ Cloud Computing ได้รับการยอมรับและเคารพจากเพื่อนร่วมงาน สามารถอธิบายแนวคิดทางเทคนิคที่ซับซ้อนได้อย่างชัดเจนและกระชับ