sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL:Varför kan psql inte ansluta till servern?

Felet säger att psql-verktyget inte kan hitta socket för att ansluta till din databasserver. Antingen har du inte databastjänsten igång i bakgrunden, eller så finns sockeln någon annanstans, eller kanske pg_hba.conf måste fixas.

Steg 1:Kontrollera att databasen körs

Kommandot kan variera beroende på ditt operativsystem. Men på de flesta *ix-system skulle följande fungera, det kommer att söka efter postgres bland alla pågående processer

ps -ef | grep postgres

På mitt system, mac osx, spottar detta ut

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

Den sista kolumnen visar kommandot som används för att starta servern och alternativen.

Du kan titta på alla tillgängliga alternativ för att starta postgres-servern genom att använda följande.

man postgres

Därifrån ser du att alternativen -D och -r är respektive datadir &logfilename .

Steg 2:Om postgres-tjänsten körs

Använd find för att söka efter platsen för socket, som borde vara någonstans i /tmp

sudo find /tmp/ -name .s.PGSQL.5432

Om postgres är igång och accepterar uttagsanslutningar, bör ovanstående berätta var uttaget finns. På min maskin visade det sig vara:

/tmp/.s.PGSQL.5432

Försök sedan att ansluta via psql med den här filens plats explicit, t.ex.

psql -h /tmp/ dbname

Steg 3:Om tjänsten körs men du inte ser något uttag

Om du inte kan hitta socket men ser att tjänsten körs, verifiera att filen pg_hba.conf tillåter lokala sockets.

Bläddra till datadir och du bör hitta pg_hba.conf fil.

Som standard, nära botten av filen bör du se följande rader:

# "local" is for Unix domain socket connections only
local       all       all       trust

Om du inte ser den kan du ändra filen och starta om postgres-tjänsten.



  1. Ordningen för en SQL Select-sats utan Order By-sats

  2. Hur man grupperar efter månad i MySQL

  3. SQL INTERSECT

  4. Varför förbrukar iteration genom en stor Django QuerySet enorma mängder minne?