แก้ไข: psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

PostgreSQL สนับสนุนตัวเองให้เป็นแพลตฟอร์มแอ็พพลิเคชันฐานข้อมูลโอเพนซอร์สที่ทันสมัยที่สุดและ Debian Linux มีแพคเกจมากมายที่ทำให้ซับซ้อนมากยิ่งขึ้น คุณยังสามารถหา boatloads ของแพคเกจสำหรับ PostgreSQL ถ้าคุณกำลังทำงานกับ Ubuntu Server หรือ Ubuntu spins ต่างๆเนื่องจากพวกเขาใช้พื้นฐานของ Debian ระดับความซับซ้อนและการพัฒนานี้ทำให้ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์และไม่มีไฟล์หรือคำเตือนไดเรกทอรีที่น่ารำคาญมากขึ้น

โชคดีที่ปัญหาเหล่านี้มักเป็นปัญหาที่ได้รับอนุญาตเนื่องจากข้อเท็จจริงที่ว่า PostgreSQL ต้องการให้ผู้ใช้ชื่อ postgres สามารถใช้งานไดเรกทอรีเหล่านี้ได้ โดยใช้เคล็ดลับบรรทัดคำสั่งง่ายๆคุณสามารถแก้ไขปัญหานี้เกือบจะทันที คุณจะต้องผ่านการตรวจวินิจฉัยขั้นพื้นฐาน 2-3 ครั้งก่อนเพื่อให้แน่ใจว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นจริง

การแก้ไข PostgreSQL ไม่สามารถเชื่อมต่อกับข้อผิดพลาดของเซิร์ฟเวอร์

ขั้นแรกให้ลองรีสตาร์ทระบบ PostgreSQL ด้วยตนเอง บางครั้งก็เพียงพอที่จะแก้ไขสิ่งต่างๆและถ้าไม่ใช่อย่างน้อยคุณจะได้รับข้อความแสดงข้อผิดพลาดในการทำงาน มากกว่าที่คุณจะรีสตาร์ทระบบโดยการออกคำสั่ง psql เป็นผู้ใช้ postgres

คุณอาจพบว่าสิ่งนี้ทำให้ทุกอย่างเรียบร้อยขึ้น มิฉะนั้นคุณอาจได้รับบรรทัดที่อ่าน psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวซึ่งหมายความว่าคุณมีปัญหาเกี่ยวกับสิทธิ์ ถ้าคุณได้รับข้อความแสดงข้อผิดพลาดนี้คุณจะได้รับข้อความอื่น ๆ ออกด้วย

ตรวจสอบสถานะการให้บริการถ้าคุณได้รับข้อความนี้เพื่อให้แน่ใจว่าได้โหลดโมดูลแล้ว ควรใช้ แต่ถ้าไม่ต้องการเริ่มต้นใหม่ ถ้าคุณได้รับข้อความว่า Loaded: loaded (/lib/systemd/system/postgresql.service; enabled) แล้วพวกเขาก็จะทำงาน ลองใช้ บริการ sudo postgresql เพื่อเริ่มต้นการรีสตาร์ทใหม่และดูว่ามีการแก้ไขอะไรหรือไม่ โดยปกติแล้วไม่ได้ แต่อาจคุ้มค่ากับการลองใช้

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่


สมมติว่ามันไม่ได้ช่วยให้ได้มองภายในของ e PostgreSQL เข้าสู่ระบบเพื่อหาข้อผิดพลาด ในกรณีที่คุณไม่ได้พบข้อผิดพลาดเกี่ยวกับแพคเกจคุณอาจพลาดโมดูล SQL ชุดใดชุดหนึ่ง นี่ไม่ใช่สาเหตุของปัญหาเหล่านี้ แต่อย่างน้อยก็ไม่สามารถทำร้ายได้อย่างน้อยที่สุด มากกว่าจะเป็นจริงคุณจะเจอสิ่งที่เตือนคุณว่าสิทธิ์ควรเป็น u = rwx (0700) และ

ไดเรกทอรีข้อมูล /var/lib/postgresql/9.6/main มีสิทธิ์เข้าถึงระดับกลุ่มหรือระดับโลกแม้ว่าคุณอาจเห็นหมายเลขเวอร์ชันอื่นขึ้นอยู่กับเซิร์ฟเวอร์ SQL ที่คุณใช้อยู่

เนื่องจากการแจกแจง Debian และที่คล้ายกันคาดหวังว่าผู้ใช้ postgres และกลุ่มจะควบคุมไดเร็กทอรีเหล่านี้ด้วยสิทธิ์ 0700 และไฟล์ทั้งหมดผ่านสิทธิ์ของ 0600 เพื่อความปลอดภัย สิ่งที่คุณต้องทำคือเรียกใช้คำสั่งต่อไปนี้ที่ terminal เพื่อแก้ไขสิทธิ์:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/

โปรดทราบว่าควรเป็น X กรณีที่ไม่ใช่กรณีทั่วไปของ x ซึ่งคุณอาจคุ้นเคยกับวิธีการที่คุณต้องการตั้งค่าตัวเลือกการอนุญาตไฟล์เหล่านี้ ในขณะที่คุณต้องการเข้าถึงรากเพื่อทำเช่นนี้การใส่เครื่องหมาย sudo ทั้งสองแบบนี้ควรจะเพียงพอสำหรับการให้สิทธิ์ที่เหมาะสมเมื่อใช้งานในฐานะผู้ใช้ปกติ นี่เป็นสิ่งสำคัญเนื่องจากอูบุนตูและการใช้งานลีนุกซ์ต่างๆได้ถูกปั่นออกจาก Ubuntu hash จากบัญชีหลักเพื่อที่คุณจะต้องทำสิ่งต่างๆด้วยวิธีนี้

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

นี่เป็นข้อผิดพลาดที่เกิดขึ้นเนื่องจากเงื่อนไขเฉพาะอย่างเป็นธรรมดังนั้นคุณจึงไม่ควรประสบปัญหานี้อีกหลังจากที่คุณได้แก้ไขข้อผิดพลาดครั้งแรกหากคุณไม่พยายามทำสิ่งใดที่เกี่ยวข้องกับการจัดการสิทธิ์ของไดเรกทอรี PostgreSQL ด้วยตนเอง ไม่มีสถานการณ์ที่ควรจะเป็นสิ่งจำเป็นอยู่ดีนอกจากการแก้ไขปัญหานี้ในตอนแรก

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest