Psql non è riuscito a connettersi al server: nessun file o directory di questo tipo, errore 5432?


114

Sto cercando di eseguire psqlsulla mia macchina Vagrant, ma ottengo questo errore:

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

Nota: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

Comandi EDIT che ho usato per installare ed eseguire postgres:

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

1
Questa è stata la risposta che ha funzionato per me: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Risposte:


157

Ho avuto lo stesso problema, relativo alla configurazione del mio file pg_hba.conf (che si trova in /etc/postgresql/9.6/main). Tieni presente che la 9.6 è la versione postgresql che sto usando.

L'errore stesso è correlato a un'errata configurazione di postgresql, che causa l'arresto anomalo del server prima dell'avvio.

Suggerirei di seguire queste istruzioni:

  1. Certifica che il servizio postgresql è in esecuzione, utilizzando sudo service postgresql start
  2. Esegui pg_lsclustersdal tuo terminale
  3. Controlla qual è il cluster che stai eseguendo, l'output dovrebbe essere qualcosa del tipo:

    Versione: directory dei dati del proprietario dello stato della porta del cluster

    9.6 ------- main - 5432 postgres online /var/lib/postgresql/9.6/main

    Ignorare i segni "---", poiché vengono utilizzati solo per l'allineamento. Le informazioni importanti sono la versione e il cluster. È inoltre possibile verificare se il server è in esecuzione o meno nella colonna dello stato.

  4. Copia le informazioni dalla versione e dal cluster e usale in questo modo:, pg_ctlcluster <version> <cluster> startquindi nel mio caso, utilizzando la versione 9.6 e il cluster 'main', sarebbepg_ctlcluster 9.6 main start
  5. Se qualcosa non va, postgresql genererà un registro, a cui è possibile accedere /var/log/postgresql/postgresql-<version>-main.log, quindi nel mio caso, il comando completo sarebbe sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. L'output dovrebbe mostrare qual è l'errore.

    2017-07-13 16:53:04 BRT [32176-1] LOG: metodo di autenticazione non valido "all"
    2017-07-13 16:53:04 BRT [32176-2] CONTESTO: riga 90 del file di configurazione "/ ecc. /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: impossibile caricare pg_hba.conf

  7. Correggi gli errori e riavvia il servizio postgresql sudo service postgresql restarte dovrebbe andare bene.

Ho cercato molto per trovarlo, il merito va a questo post .

Buona fortuna!


1
Ottima guida. Pieno di spiegazioni esaurienti!
Salathiel Genèse

37

Ho avuto lo stesso problema ma nessuna delle risposte qui ha aiutato.

Come l'ho risolto (mac)

  • Prova ad avviare postgresql con pg_ctl -D /usr/local/var/postgres start
  • Cerca il messaggio di errore che dice qualcosa come FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Crea quella directory mancante mkdir /usr/local/var/postgres/pg_tblspc
  • Ripeti dal passaggio uno finché non hai creato tutte le directory mancanti
  • Al termine e quindi tentando di avviare nuovamente postgresql, potrebbe essere visualizzatoFATAL: lock file "postmaster.pid" already exists
  • Elimina postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Inizia postgres con: pg_ctl -D /usr/local/var/postgres start
  • Fatto ✨

13

Sto solo postando questo per chiunque si senta perso e senza speranza come ho fatto io quando ho trovato questa domanda. Sembra che a volte modificando alcuni file di configurazione relativi a psotgresql, si possano cambiare accidentalmente i permessi del file:

inserisci qui la descrizione dell'immagine

Nota come pg_hba.conf appartiene a root e gli utenti non possono nemmeno leggerlo. Questo fa sì che postgres non sia in grado di aprire questo file e quindi non sia in grado di avviare il server, lanciando l'errore visto nella domanda originale.

Correndo

sudo chmod +r pg_hba.conf

Sono stato in grado di rendere questo file nuovamente accessibile all'utente di postgres e poi dopo l'esecuzione

sudo service postgresql start

È stato possibile riavviare il server.


Sì, questo era il mio problema, e questo non veniva indicato nei log (o se lo era non lo capivo).
EAmez

Non esattamente quello che è successo a me, ma per qualche motivo il SERVIZIO DI RETE ha perso i privilegi di scrittura per l'intera struttura della directory. Questa risposta mi ha indirizzato nella giusta direzione, quindi il voto positivo.
Brad Mathews,

5

Lo /etc/postgresql/9.6/main/postgresql.confmostra quella porta assegnata? Nella mia installazione predefinita di Xubuntu Linux, la mia mostrava port = 5433 per qualche motivo nel miglior modo possibile, ma ho commentato la riga nello stesso file che diceva listen_addresses = 'localhost'e decommentato la riga listen_addresses = '*'. Quindi forse inizia e controlla lì. Spero che aiuti.


4

Usa comando:

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

9
Questo non rimuove l'intero database? Penso che sia necessaria una parola di avvertimento.
d33tah

1
Grazie @Tucker Watts e @Gaurav Verma. Ho risolto il mio problema provando entrambe le soluzioni e aggiunto questo comando pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo

4

Questo funziona per me:

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

4

Questi due passaggi lo hanno risolto per me su Mac:

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

MODIFICARE:

Nel caso in cui affronti questo problema (segnalato da @ luckyguy73): psql: FATAL: database "postgresql" does not exist

Puoi correre

brew postgresql-upgrade-database

per risolverlo.


grazie amico, sono passato da un impossibile connettersi a un fatale seguendo le tue istruzioni: "psql: FATAL: database" postgresql "non esiste"
luckyguy73

Eh strano, questo funziona sempre per me. Sei riuscito a risolverlo?
nicodp

nessun problema, in realtà è andato tutto bene. ho appena eseguito 'brew postgresql-upgrade-database' e questo ha funzionato, grazie
luckyguy73

1
Sono contento che tu l'abbia risolto! Se non ti dispiace, lo aggiungerò anche alla risposta, nel caso qualcun altro affronti lo stesso problema. Grazie
nicodp

3

All'interno di zsh:

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

Questa è l'unica cosa che ha funzionato per me dopo innumerevoli ore di risoluzione dei problemi.


Ho appena cancellato tutti i miei database locali ... grazie
AlxVallejo

2

Apri il tuo database manager ed esegui questo script

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

2

La stessa cosa è successa a me perché avevo cambiato qualcosa nel /etc/hostsfile. Dopo averlo ripristinato, 127.0.0.1 localhostha funzionato per me.


2

basta reinstallare il tuo pgsql con la versione diretta sudo apt-get install postgresql-9.5 (devi rimuovere il pacchetto prima di installarne uno nuovo)


2

Sono stato in grado di risolvere il problema eseguendo:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-mainha funzionato per me
parsecer

2

Nel mio caso è stato il file di blocco postmaster.idche non è stato eliminato correttamente durante l'ultimo arresto anomalo del sistema a causare il problema. Eliminarlo con sudo rm /usr/local/var/postgres/postmaster.pide riavviare Postgres ha risolto il problema.


1

Ho avuto lo stesso errore quando creo il database SQL in una VM. Avevo cambiato il valore predefinito di /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBal 75% della mia RAM totale. Bene, ho dimenticato di allocare effettivamente quella RAM nella VM. Quando ho dato il comando per creare un nuovo database, ho ricevuto lo stesso errore.

Spento, ha dato al bambino il suo biberon (RAM) e presto, ha funzionato.


1

Ho ricevuto questo errore quando ho ripristinato il mio database dall'ultimo file di backup pg_basebackup. Dopodiché, quando ho provato a connettere il database (psql), ho ricevuto lo stesso errore. L'errore è stato risolto, quando ho aggiornato il file pg_hba.conf e ovunque fosse presente l'autenticazione "peer" l'ho sostituito con "md5" e quindi ho riavviato i servizi postgres. Successivamente, il problema è stato risolto.


1

Ho avuto problemi simili solo qualche tempo fa. Dopo aver provato più di 5 suggerimenti, ho deciso di tornare alle basi e ricominciare dall'inizio. Ciò significava rimuovere la mia installazione di postgresql e seguire questa guida dopo aver reinstallato postgresql. https://help.ubuntu.com/lts/serverguide/postgresql.html


1

Questo errore mi è accaduto dopo che il mio mac mini è stato scollegato (quindi spegnimento forzato) e tutto ciò che dovevo fare per risolverlo era riavviare


1

Ti consiglio di chiarire il port che postgres. Nel mio caso non sapevo su quale porta fosse in esecuzione Postgres.

lsof -i | grep 'post'

allora puoi sapere quale porta è in ascolto.

psql -U postgres -p "port_in_use"

con l'opzione port, potrebbe essere la risposta. puoi usare psql.


1

Occasionalmente ho lo stesso problema, ma soprattutto dopo gli aggiornamenti di macOS. L'arresto e la migrazione alla nuova versione di solito risolve il problema (apporta modifiche in base alla tua versione). Quindi prima aggiorna il tuo postgresql

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

Questa è principalmente una soluzione temporanea ma poiché non sono riuscito a trovare una soluzione migliore, questo funziona per me.


brew postgresql-upgrade-database è ciò che alla fine ha funzionato per me dopo aver provato tutto il resto
luckyguy73

1

Se nessuna delle risposte precedenti non funziona per te, prova questa,

Molte persone hanno menzionato molte soluzioni a questo problema! Ma tutti lo hanno dimenticato, lo stesso problema si presenterà quando il tuo disco non ha abbastanza spazio o lo spazio che ti è stato assegnato postgresè pieno

Controlla la memoria del tuo sistema, se è piena libera un po 'di spazio! quindi riavvia il tuo postgres sudo service postgresql restarto fai una fermata e inizia sudo service posgresql stoppoisudo service postgresql start

Questo risolverà il problema, ha risolto per me


0

Ho lo stesso problema con postgres 11 sul mio Mac. Ottengo questo errore ogni volta dopo il riavvio

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

Come soluzione temporanea lo faccio

brew services stop postgresql@11
brew services start postgresql@11
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.