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


120

ฉันพยายามรันpsqlบนเครื่อง Vagrant แต่ได้รับข้อผิดพลาดนี้:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

หมายเหตุ: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

แก้ไข คำสั่งที่ฉันใช้เพื่อติดตั้งและเรียกใช้ postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

2
นี่คือคำตอบที่เหมาะกับฉัน: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

คำตอบ:


164

ฉันมีปัญหาเดียวกันนี้เกี่ยวข้องกับการกำหนดค่าไฟล์ pg_hba.conf ของฉัน (อยู่ใน/etc/postgresql/9.6/main) โปรดทราบว่า 9.6 เป็นเวอร์ชัน postgresql ที่ฉันใช้อยู่

ข้อผิดพลาดนั้นเกี่ยวข้องกับการกำหนดค่า postgresql ผิดพลาดซึ่งทำให้เซิร์ฟเวอร์หยุดทำงานก่อนที่จะเริ่มทำงาน

ฉันขอแนะนำให้ทำตามคำแนะนำเหล่านี้:

  1. รับรองว่าบริการ postgresql กำลังทำงานอยู่โดยใช้ sudo service postgresql start
  2. เรียกใช้pg_lsclustersจากเครื่องปลายทางของคุณ
  3. ตรวจสอบว่าคลัสเตอร์ที่คุณกำลังเรียกใช้คืออะไรผลลัพธ์ควรเป็นดังนี้:

    เวอร์ชัน - ไดเร็กทอรีข้อมูลเจ้าของสถานะคลัสเตอร์พอร์ต

    9.6 ------- หลัก - 5432 postgres ออนไลน์ /var/lib/postgresql/9.6/main

    ไม่ต้องสนใจเครื่องหมาย '---' เนื่องจากมีการใช้ที่นั่นเพื่อการจัดตำแหน่งเท่านั้น ข้อมูลที่สำคัญ ได้แก่ เวอร์ชันและคลัสเตอร์ คุณยังสามารถตรวจสอบว่าเซิร์ฟเวอร์กำลังทำงานอยู่หรือไม่ในคอลัมน์สถานะ

  4. คัดลอกข้อมูลจากเวอร์ชันและคลัสเตอร์และใช้ดังนี้: pg_ctlcluster <version> <cluster> startดังนั้นในกรณีของฉันการใช้เวอร์ชัน 9.6 และคลัสเตอร์ 'main' จะเป็นpg_ctlcluster 9.6 main start
  5. หากมีบางอย่างผิดปกติ postgresql จะสร้างบันทึกที่สามารถเข้าถึงได้/var/log/postgresql/postgresql-<version>-main.logดังนั้นในกรณีของฉันคำสั่งเต็มจะเป็นsudo nano /var/log/postgresql/postgresql-9.6-main.logดังนั้นในกรณีของฉันคำสั่งเต็มรูปแบบจะเป็น
  6. ผลลัพธ์ควรแสดงว่าอะไรคือข้อผิดพลาด

    2017-07-13 16:53:04 BRT [32176-1] LOG: วิธีการตรวจสอบสิทธิ์ที่ไม่ถูกต้อง "ทั้งหมด"
    2017-07-13 16:53:04 BRT [32176-2] CONTEXT: บรรทัดที่ 90 ของไฟล์การกำหนดค่า "/ ฯลฯ /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: ไม่สามารถโหลด pg_hba.conf

  7. แก้ไขข้อผิดพลาดและรีสตาร์ทบริการ postgresql ผ่านsudo service postgresql restartและควรจะดี

ฉันได้ค้นหาสิ่งนี้มากมายเพื่อค้นหาสิ่งนี้เครดิตไปที่โพสต์นี้นี้

ขอให้โชคดี!


2
คำแนะนำที่ยอดเยี่ยม เต็มไปด้วยคำอธิบายที่ครอบคลุม!
Salathiel Genèse

40

ฉันมีปัญหาเดียวกัน แต่ไม่มีคำตอบที่นี่ช่วยได้

ฉันจะแก้ไขได้อย่างไร (Mac)

  • ลองเริ่ม postgresql ด้วย pg_ctl -D /usr/local/var/postgres start
  • มองหาข้อผิดพลาดข้อความFATAL: could not open directory "pg_tblspc": No such file or directoryที่บอกว่าสิ่งที่ต้องการ
  • สร้างไดเร็กทอรีที่ขาดหายไป mkdir /usr/local/var/postgres/pg_tblspc
  • ทำซ้ำจากขั้นตอนที่หนึ่งจนกว่าคุณจะสร้างไดเร็กทอรีที่ขาดหายไปทั้งหมด
  • เมื่อเสร็จแล้วลองเริ่ม postgresql อีกครั้งมันอาจจะบอกว่าFATAL: lock file "postmaster.pid" already exists
  • ลบpostmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • เริ่ม postgres ด้วย: pg_ctl -D /usr/local/var/postgres start
  • เสร็จแล้ว✨

15

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

ป้อนคำอธิบายภาพที่นี่

สังเกตว่า pg_hba.conf เป็นของ root อย่างไรและผู้ใช้ไม่สามารถอ่านได้ สิ่งนี้ทำให้ postgres ไม่สามารถเปิดไฟล์นี้ได้ดังนั้นจึงไม่สามารถเริ่มเซิร์ฟเวอร์ได้ทำให้เกิดข้อผิดพลาดที่เห็นในคำถามเดิม

โดยการเรียกใช้

sudo chmod +r pg_hba.conf

ฉันสามารถทำให้ไฟล์นี้เข้าถึงได้อีกครั้งโดยผู้ใช้ postgres และหลังจากเรียกใช้

sudo service postgresql start

ก็สามารถที่จะทำให้เซิร์ฟเวอร์ทำงานอีกครั้ง


ใช่นี่เป็นปัญหาของฉันและสิ่งนี้ไม่ได้ระบุไว้ในบันทึก (หรือถ้าเป็นฉันก็ไม่เข้าใจเหมือนกัน)
EAmez

ไม่ใช่สิ่งที่เกิดขึ้นกับฉันอย่างแน่นอน แต่ด้วยเหตุผลบางประการ NETWORK SERVICE สูญเสียสิทธิ์การเขียนไปยังโครงสร้างไดเรกทอรีทั้งหมด คำตอบนี้ชี้ให้ฉันไปในทิศทางที่ถูกต้องดังนั้นการโหวตเพิ่ม
Brad Mathews

7

สองขั้นตอนนี้แก้ไขได้สำหรับฉันบน Mac:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

แก้ไข:

ในกรณีที่คุณประสบปัญหานี้ (รายงานโดย @ luckyguy73): psql: FATAL: database "postgresql" does not exist

คุณสามารถเรียกใช้

brew postgresql-upgrade-database

เพื่อแก้ไข


ขอบคุณมากฉันไปจากที่ไม่สามารถเชื่อมต่อกับผู้เสียชีวิตโดยทำตามคำแนะนำของคุณ: "psql: FATAL: ไม่มีฐานข้อมูล" postgresql "
luckyguy73

น่าแปลกที่มันใช้ได้กับฉันเสมอ คุณจัดการแก้ได้หรือไม่?
nicodp

ไม่ต้องกังวลมันก็โอเคจริงๆ ฉันเพิ่งเรียกใช้ 'brew postgresql-upgrade-database' และนั่นก็เป็นเคล็ดลับขอบคุณ
luckyguy73

1
ดีใจที่คุณแก้ไข! หากคุณไม่ทราบฉันจะเพิ่มคำตอบนั้นด้วยเผื่อว่ามีคนอื่นประสบปัญหาเดียวกัน ขอบคุณ
nicodp

5

ไม่/etc/postgresql/9.6/main/postgresql.confแสดงให้เห็นว่าได้รับมอบหมายพอร์ต? เมื่อวันที่เริ่มต้นของฉัน Xubuntu ลินุกซ์ติดตั้งเหมืองแสดงให้เห็นพอร์ต = 5433 ด้วยเหตุผลบางอย่างดีที่สุดเท่าที่ผมจำได้ แต่ฉันไม่แสดงความคิดเห็นออกบรรทัดในไฟล์เดียวกันกับที่กล่าวว่าlisten_addresses = 'localhost'และ uncommented listen_addresses = '*'บรรทัด ดังนั้นอาจเริ่มและตรวจสอบที่นั่น หวังว่าจะช่วยได้



4

ใช้คำสั่ง:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

9
ไม่ได้ลบฐานข้อมูลทั้งหมดใช่หรือไม่ ฉันคิดว่าคำเตือนจะเป็นไปตามลำดับ
d33tah

1
ขอบคุณ @Tucker Watts และ @Gaurav Verma ฉันแก้ไขปัญหาของฉันโดยลองทั้งสองวิธีและเพิ่มคำสั่งpg_ctl -D /usr/local/var/postgres -l logfile startนี้
Niyongabo

3

ภายใน zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

นี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉันหลังจากประสบปัญหามากมายนับไม่ถ้วน


ฉันเพิ่งลบฐานข้อมูลในเครื่องทั้งหมดของฉัน ... ขอบคุณ
AlxVallejo



2

สิ่งเดียวกับที่เกิดขึ้นกับฉันเมื่อฉันเปลี่ยนบางอย่างใน/etc/hostsไฟล์ หลังจากเปลี่ยนมันกลับไป127.0.0.1 localhostใช้งานได้สำหรับฉัน


2

เพียงแค่ติดตั้ง pgsql ของคุณใหม่ด้วยเวอร์ชันโดยตรง sudo apt-get install postgresql-9.5 (คุณต้องลบแพ็คเกจก่อนติดตั้งใหม่)


2

ในกรณีของฉันมันเป็นไฟล์ล็อกpostmaster.idที่ไม่ได้ถูกลบอย่างถูกต้องในระหว่างที่ระบบขัดข้องครั้งล่าสุดที่ทำให้เกิดปัญหา การลบsudo rm /usr/local/var/postgres/postmaster.pidและรีสตาร์ท Postgres ช่วยแก้ปัญหาได้


1

ฉันมีข้อผิดพลาดเดียวกันเมื่อฉันสร้างฐานข้อมูล SQL ใน VM ฉันได้เปลี่ยนค่าเริ่มต้นของ /etc/postgresql/9.3/main/postgresql.confshared_buffers = 200MBเป็น 75% ของ RAM ทั้งหมดของฉัน ฉันลืมจัดสรร RAM นั้นใน VM จริงๆ เมื่อฉันให้คำสั่งเพื่อสร้างฐานข้อมูลใหม่ฉันได้รับข้อผิดพลาดเดียวกัน

ปิดเครื่องให้ขวดนม (RAM) และโอมเพี้ยงแก่ทารกมันใช้งานได้


1

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันกู้คืนฐานข้อมูลจากไฟล์สำรอง pg_basebackup ล่าสุด หลังจากนั้นเมื่อฉันพยายามเชื่อมต่อฐานข้อมูล (psql) ฉันก็ได้รับข้อผิดพลาดเดียวกัน ข้อผิดพลาดได้รับการแก้ไขเมื่อฉันอัปเดตไฟล์ pg_hba.conf และทุกที่ที่มีการตรวจสอบสิทธิ์ "เพียร์" อยู่ที่นั่นฉันแทนที่ด้วย "md5" จากนั้นจึงเริ่มบริการ postgres ใหม่ หลังจากนั้นปัญหาได้รับการแก้ไข


1

ฉันมีปัญหาคล้าย ๆ กันเมื่อไม่นานมานี้ หลังจากลองใช้คำแนะนำมากกว่า 5 ข้อแล้วฉันตัดสินใจกลับไปที่พื้นฐานและเริ่มตั้งแต่ต้น ซึ่งหมายถึงการลบการติดตั้ง postgresql ของฉันและทำตามคำแนะนำนี้เมื่อติดตั้ง postgresql ใหม่ https://help.ubuntu.com/lts/serverguide/postgresql.html


1

ข้อผิดพลาดนี้เกิดขึ้นกับฉันหลังจากที่ mac mini ของฉันไม่ได้เสียบปลั๊ก (บังคับให้ปิดเครื่อง) และสิ่งที่ฉันต้องทำเพื่อแก้ไขคือรีสตาร์ท


1

ฉันขอแนะนำให้คุณชี้แจงพอร์ตที่ postgres ในกรณีของฉันฉันไม่รู้ว่าพอร์ตใดกำลังทำงานอยู่

lsof -i | grep 'post'

จากนั้นคุณจะรู้ได้ว่าพอร์ตใดกำลังฟังอยู่

psql -U postgres -p "port_in_use"

ด้วยตัวเลือกพอร์ตอาจเป็นคำตอบ คุณสามารถใช้ psql


1

หากคำตอบข้างต้นไม่ได้ผลสำหรับคุณโปรดลองคำตอบนี้

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

ตรวจสอบที่เก็บข้อมูลระบบของคุณว่าพื้นที่ว่างเต็มหรือไม่! จากนั้นรีสตาร์ท postgres ของคุณโดยsudo service postgresql restartหรือหยุดsudo service posgresql stopแล้วเริ่มจากนั้นsudo service postgresql start

สิ่งนี้จะแก้ปัญหาได้และแก้ไขได้สำหรับฉัน


1

บางครั้งฉันมีปัญหาเดียวกัน แต่ส่วนใหญ่เกิดจากการอัปเกรด macOS การปิดและย้ายไปยังเวอร์ชันใหม่มักจะแก้ไขได้สำหรับฉัน (ทำการเปลี่ยนแปลงตามเวอร์ชันของคุณ) ก่อนอื่นให้อัปเกรด postgresql ของคุณ

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

ส่วนใหญ่เป็นการแก้ไขชั่วคราว แต่เนื่องจากฉันไม่พบวิธีแก้ไขที่ดีกว่านี้จึงเหมาะกับฉัน

อัปเดต: หากปัญหาระบุว่าเจ้าหน้าที่ไปรษณีย์คนอื่นกำลังทำงานอยู่ให้ลองลบออกจากตำแหน่งนั้น (ตำแหน่ง postmaster.pid ของคุณจะแสดงให้คุณเห็น)

rm /usr/local/var/postgres/postmaster.pid


เบียร์ postgresql-upgrade-database เป็นสิ่งที่ใช้ได้ผลสำหรับฉันในที่สุดหลังจากที่ฉันลองทุกอย่างอื่น
luckyguy73

0

ฉันมีปัญหาเดียวกันกับ postgres 11 บน Mac ของฉัน ฉันได้รับข้อผิดพลาดนี้ทุกครั้งหลังจากรีสตาร์ท

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

เป็นการแก้ไขชั่วคราวฉันทำ

brew services stop postgresql@11
brew services start postgresql@11

0
FATAL:  could not load server certificate file "/etc/ssl/certs/ssl-cert-snakeoil.pem": No such file or directory
LOG:  database system is shut down
pg_ctl: could not start server

ฉันมีไฟล์ ssl-cert-snakeoil.pem ที่หายไปดังนั้นฉันจึงสร้างโดยใช้make-ssl-cert create-default-snakeoil --force-overwriteและมันก็ทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.