Se il tuo servizio Postgres è attivo e funzionante senza errori o non ci sono errori nell'avvio del servizio Postgres e continui a ricevere l'errore menzionato, segui questi passaggi
Passaggio 1:eseguire pg_lsclusters
elencherà tutti i cluster postgres in esecuzione sul tuo dispositivo
es:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
molto probabilmente lo stato sarà inattivo nel tuo caso. Prova a riavviare i cluster e il servizio Postgres
Passaggio 2:riavvia pg_ctlcluster
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgresql service
sudo service postgresql restart
Passaggio 3:il passaggio 2 non è riuscito e ha generato un errore
Se questo processo non va a buon fine genererà l'errore. Il mio errore era(Puoi vedere il log degli errori su /var/log/postgresql/postgresql-9.6-main.log
)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
Passaggio 4:controlla la proprietà di postgres
Assicurati che postgres
è il proprietario di /var/lib/postgresql/version_no/main
es:sudo chown postgres -R /var/lib/postgresql/9.6/main/
Passaggio 5:verifica che l'utente Postgres appartenga al gruppo utenti ssl-cert
È successo a me e si è scoperto che ho rimosso erroneamente l'utente Postgres dal gruppo "ssl-cert". Esegui il codice seguente per risolvere il problema del gruppo utenti e correggere le autorizzazioni
#set user to group back with
sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
sudo service postgresql restart
Probabilmente hai installato più versioni di PostgreSQL. In tal caso, l'altra versione probabilmente ha come impostazione predefinita unix_socket_directories = '/tmp/'
ma il libpq
il tuo psql
è collegato a probabilmente il valore predefinito è /var/run/postgresql/
.
Prova
psql -h /tmp
Se funziona, il problema è quanto sopra. Puoi aggiungere export PGHOST=/tmp
al tuo .bashrc
per modificare l'impostazione predefinita in locale per il tuo utente.
In caso contrario, non funziona, assicurati che PostgreSQL sia effettivamente in esecuzione
ps aux |grep postgres
e se no, avvialo. Come dipende da come l'hai installato, ma sarà tramite service
o systemctl
comando(i) se hai installato utilizzando i pacchetti.
psql:impossibile connettersi al server:Nessun file o directory di questo tipo Il server è in esecuzione localmente e accetta connessioni su socket di dominio Unix"/var/run/postgresql/.s.PGSQL.5432"?
Questo errore generalmente indica che il server non è in esecuzione. Basato su dpkg -l
output e il thread di commenti, era dovuto al postgresql-9.5
pacchetto principale viene in qualche modo disinstallato. Poiché la disinstallazione non è stata chiamata con --purge
opzione a dpkg
, i dati e i file di configurazione sono ancora lì, quindi apt-get install postgresql-9.5
può risolvere il problema.