L'errore indica che l'utilità psql non riesce a trovare il socket per connettersi al server del database. O non hai il servizio database in esecuzione in background, o il socket si trova altrove, o forse il pg_hba.conf
deve essere risolto.
Fase 1:verifica che il database sia in esecuzione
Il comando può variare a seconda del sistema operativo. Ma sulla maggior parte dei sistemi *ix funzionerebbe quanto segue, cercherà postgres tra tutti i processi in esecuzione
ps -ef | grep postgres
Sul mio sistema, mac osx, questo sputa fuori
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
L'ultima colonna mostra il comando utilizzato per avviare il server e le opzioni.
Puoi guardare tutte le opzioni disponibili per avviare il server postgres usando quanto segue.
man postgres
Da lì, vedresti che le opzioni -D
e -r
sono rispettivamente la datadir
&il logfilename
.
Fase 2:se il servizio postgres è in esecuzione
Usa find
per cercare la posizione del socket, che dovrebbe essere da qualche parte nel /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Se postgres è in esecuzione e accetta connessioni socket, quanto sopra dovrebbe dirti la posizione del socket. Sulla mia macchina, si è rivelato essere:
/tmp/.s.PGSQL.5432
Quindi, prova a connetterti tramite psql utilizzando esplicitamente la posizione di questo file, ad es.
psql -h /tmp/ dbname
Fase 3:se il servizio è in esecuzione ma non vedi un socket
Se non riesci a trovare il socket, ma vedi che il servizio è in esecuzione, verifica che il file pg_hba.conf consenta i socket locali.
Passare a datadir
e dovresti trovare il pg_hba.conf
file.
Per impostazione predefinita, nella parte inferiore del file dovresti vedere le seguenti righe:
# "local" is for Unix domain socket connections only
local all all trust
Se non lo vedi, puoi modificare il file e riavviare il servizio postgres.