Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

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

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

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

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

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

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

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


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

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

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

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 และการใช้งาน Linux ต่างๆ แยกตัวออกจาก Ubuntu แฮชบัญชีรูทหลัก ดังนั้นคุณต้องทำสิ่งต่างๆ ด้วยวิธีนี้

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

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

เกี่ยวกับผู้เขียน

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

เควิน แอร์โรว์ส

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