Psql sunucuya bağlanamadı: Böyle bir dosya veya dizin yok, 5432 hatası?


120

psqlVagrant makinemde çalışmaya çalışıyorum ama şu hatayı alıyorum:

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"?

Not: Vagrant 1.9.2 Kutu: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

Postgres yüklemek ve çalıştırmak için kullandığım Komutları DÜZENLE :

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

2
Benim için işe yarayan
Bruno Louvem Azeredo

Yanıtlar:


164

Aynı sorunu, pg_hba.conf dosyamın (konumunda bulunan /etc/postgresql/9.6/main) yapılandırmasıyla ilgili olarak yaşadım . Lütfen 9.6'nın kullandığım postgresql sürümü olduğunu unutmayın.

Hatanın kendisi, postgresql'nin yanlış yapılandırılmasıyla ilgilidir ve bu, sunucunun başlamadan önce çökmesine neden olur.

Şu talimatları izlemenizi öneririm:

  1. Postgresql hizmetinin çalıştığını onaylayın. sudo service postgresql start
  2. pg_lsclustersTerminalinizden çalıştırın
  3. Çalıştırdığınız kümenin ne olduğunu kontrol edin, çıktı şöyle olmalıdır:

    Sürüm - Küme Bağlantı Noktası Durumu Sahip Verileri dizini

    9.6 ------- ana - 5432 çevrimiçi postgres /var/lib/postgresql/9.6/main

    Orada sadece hizalama için kullanıldıkları için '---' işaretlerini dikkate almayın. Önemli bilgiler sürüm ve kümedir. Durum sütunundan sunucunun çalışıp çalışmadığını da kontrol edebilirsiniz.

  4. Bilgileri sürümden ve kümeden kopyalayın ve şu şekilde kullanın: pg_ctlcluster <version> <cluster> startbenim durumumda sürüm 9.6 ve 'ana' kümesini kullanarakpg_ctlcluster 9.6 main start
  5. Bir şey yanlışsa, postgresql erişilebilen bir günlük oluşturacaktır, bu /var/log/postgresql/postgresql-<version>-main.logyüzden benim durumumda tam komut olacaktır sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. Çıktı, hatanın ne olduğunu göstermelidir.

    2017-07-13 16:53:04 BRT [32176-1] GÜNLÜK: geçersiz kimlik doğrulama yöntemi "tümü"
    2017-07-13 16:53:04 BRT [32176-2] BAĞLAM: yapılandırma dosyasının 90. satırı "/ vb /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: pg_hba.conf yüklenemedi

  7. Hataları düzeltin ve postgresql hizmetini yeniden başlatın sudo service postgresql restartve iyi olmalı.

Bunu bulmak için çok araştırdım, kredi bu yazıya gidiyor .

İyi şanslar!


2
Mükemmel rehber. Kapsamlı açıklamalarla dolu!
Salathiel Genèse

40

Aynı sorunu yaşadım ama buradaki cevapların hiçbiri yardımcı olmadı.

Nasıl düzelttim (mac)

  • Postgresql ile başlamayı deneyin pg_ctl -D /usr/local/var/postgres start
  • Şöyle bir şey söyleyen Hata Mesajını arayın FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Eksik dizini oluşturun mkdir /usr/local/var/postgres/pg_tblspc
  • Tüm eksik dizinleri oluşturana kadar birinci adımdan tekrarlayın
  • Daha sonra postgresql başlatmaya çalışırken bitti ve tekrar olabilir demekFATAL: lock file "postmaster.pid" already exists
  • Postmaster.pid dosyasını silin :rm /usr/local/var/postgres/postmaster.pid
  • Postaları şununla başlat: pg_ctl -D /usr/local/var/postgres start
  • Bitti ✨

15

Bunu, bu soruyu bulduğumda yaptığım gibi kaybolmuş ve umutsuz hisseden herkes için gönderiyorum. Bazen psotgresql ile ilgili bazı yapılandırma dosyalarını düzenleyerek, yanlışlıkla dosyanın izinleri değiştirilebiliyor gibi görünüyor:

görüntü açıklamasını buraya girin

Pg_hba.conf dosyasının nasıl root'a ait olduğuna ve kullanıcıların onu okuyamayacağına dikkat edin. Bu, postgres'in bu dosyayı açamamasına ve bu nedenle sunucuyu başlatamamasına neden olarak orijinal soruda görülen hatayı atar.

Koşarak

sudo chmod +r pg_hba.conf

Bu dosyayı postgres kullanıcısı için bir kez daha erişilebilir hale getirdim ve ardından çalıştırdıktan sonra

sudo service postgresql start

Sunucuyu tekrar çalıştırmayı başardı.


Evet, bu benim sorunumdu ve bu günlüklerde belirtilmedi (ya da eğer öyleyse ben anlamadım).
EAmez

Bana tam olarak ne oldu, ama bazı nedenlerden dolayı NETWORK SERVICE tüm dizin yapısına yazma ayrıcalıklarını kaybetti. Bu cevap beni doğru yöne, dolayısıyla olumlu oylamaya işaret etti.
Brad Mathews

7

Bu iki adım Mac'te benim için çözdü:

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

DÜZENLE:

Bu sorunla karşılaşmanız durumunda (@ luckyguy73 tarafından bildirildi): psql: FATAL: database "postgresql" does not exist

Koşabilirsin

brew postgresql-upgrade-database

Tamir etmek için.


teşekkürler dostum, talimatlarınızı izleyerek ölümcül bir
cihaza

Tuhaf, bu her zaman benim için çalışıyor. Çözmeyi başardın mı?
nicodp

endişelenme, aslında iyi çıktı. 'brew postgresql-upgrade-database' i çalıştırdım ve bu hile yaptı, teşekkürler
luckyguy73

1
Düzeltmenize sevindim! Sakıncası yoksa, başka birinin aynı sorunla karşılaşması durumunda bunu da cevaba ekleyeceğim. Teşekkürler
nicodp

5

Does /etc/postgresql/9.6/main/postgresql.confliman atandığı olduğunu gösterir? Benim varsayılan Xubuntu Linux kurulumumda, hatırlayabildiğim kadarıyla benimki bağlantı noktası = 5433'ü gösterdi, ancak aynı dosyadaki listen_addresses = 'localhost'satırı söyleyen ve açıklamayan satırı yorumladım listen_addresses = '*'. Yani belki başlayıp oradan kontrol edin. Umarım yardımcı olur.


5

Bu benim için çalışıyor:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Şu komutu kullanın:

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

9
Bu, tüm veritabanını kaldırmaz mı? Sanırım bir uyarıda bulunmak yerinde olacaktır.
d33tah

1
Teşekkürler @Tucker Watts ve @Gaurav Verma. Her iki çözümü de deneyerek sorunumu çözdüm ve bu komutu ekledim pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo

3

Zsh içinde:

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

Bu, saatlerce süren sorunların ardından benim için işe yarayan tek şeydi.


Tüm yerel veritabanlarımı yeni sildim ... teşekkürler
AlxVallejo

3

Sorunu çalıştırarak çözebildim:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-mainbenim için çalıştı
parsecer

2

Veritabanı yöneticinizi açın ve bu komut dosyasını çalıştırın

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

2

/etc/hostsDosyadaki bir şeyi değiştirdiğimde aynı şey bana oldu . Onu geri değiştirdikten sonra 127.0.0.1 localhostbenim için çalıştı.


2

pgsql'nizi doğrudan sudo apt-get install postgresql-9.5 sürümüyle yeniden yükleyin (yenisini yüklemeden önce paketi kaldırmanız gerekir)


2

Benim durumumda postmaster.id, soruna neden olan son sistem çökmesi sırasında düzgün şekilde silinmeyen kilit dosyasıydı . sudo rm /usr/local/var/postgres/postmaster.pidPostgres ile silip yeniden başlatmak sorunu çözdü.


1

Bir VM'de SQL db'yi oluştururken aynı hatayı aldım. /Etc/postgresql/9.3/main/postgresql.conf'un varsayılan değerini toplam RAM'imin shared_buffers = 200MB% 75'i olarak değiştirdim . Aslında bu RAM'i sanal makineye ayırmayı unuttum. Yeni bir veritabanı oluşturma komutunu verdiğimde aynı hatayı aldım.

Kapatıldı, bebeğe biberonunu (RAM) verdi ve işe yaradı.


1

Veritabanımı son pg_basebackup yedekleme dosyasından geri yüklediğimde bu hatayı aldım. Bundan sonra veritabanına (psql) bağlanmaya çalıştığımda aynı hatayı alıyordum. Hata çözüldü, pg_hba.conf dosyasını güncellediğimde ve "eş" kimlik doğrulamasının olduğu her yerde bunu "md5" ile değiştirdim ve ardından postgres hizmetlerini yeniden başlattım. Bundan sonra sorun çözüldü.



1

Bu hata, mac mini'mün fişi çıkarıldıktan sonra (bu yüzden zorunlu kapatma) başıma geldi ve düzeltmek için tek yapmam gereken yeniden başlatmaktı


1

Postgres yapan portu netleştirmenizi öneririm. Benim durumumda hangi port postgres'in çalıştığını bilmiyordum.

lsof -i | grep 'post'

o zaman hangi bağlantı noktasının dinlediğini öğrenebilirsiniz.

psql -U postgres -p "port_in_use"

bağlantı noktası seçeneği ile cevap olabilir. psql kullanabilirsiniz.


1

Yukarıdaki cevaplardan hiçbiri sizin için işe yaramıyorsa, lütfen bunu deneyin,

Birçok insan bu soruna birçok çözümden bahsetti! Ancak hepsi, diskinizde yeterli alan olmadığında veya atandığınız postgresalan dolduğunda aynı sorunun ortaya çıkacağını unuttular.

Sistem depolama alanınız tamamen boşsa, kontrol edin! O zamana kadar da postgres yeniden sudo service postgresql restartveya bir durak yapmak ve başlangıç sudo service posgresql stopsonrasudo service postgresql start

Bu sorunu çözecek, benim için çözdü


1

Bazen aynı sorunu yaşıyorum ama çoğunlukla macOS yükseltmelerinden sonra. Kapatmak ve yeni sürüme geçmek genellikle sorunu benim için düzeltir (sürümünüze göre değişiklikler yapın). İlk önce postgresql'inizi yükseltin

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

Bu çoğunlukla geçici bir çözüm ama daha iyi bir çözüm bulamadığım için bu benim için çalışıyor.

Güncelleme: Sorun başka bir posta yöneticisinin çalıştığını söylüyorsa, o konumdan kaldırmayı deneyin (postmaster.pid konumunuz size gösterilecektir)

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


brew postgresql-upgrade-database, her şeyi denedikten sonra nihayet benim için çalıştı
luckyguy73

0

Mac'imde postgres 11 ile aynı sorunu yaşıyorum. Bu hatayı her yeniden başlattıktan sonra alıyorum

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"?

Geçici bir düzeltme olarak yapıyorum

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

Eksik bir ssl-cert-snakeoil.pem dosyam var, bu yüzden make-ssl-cert generate-default-snakeoil --force-overwrite kullanarak oluşturdum ve iyi çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.