sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:Waarom kan psql geen verbinding maken met de server?

De fout geeft aan dat het psql-hulpprogramma de socket niet kan vinden om verbinding te maken met uw databaseserver. Of je hebt de databaseservice niet op de achtergrond draaien, of de socket bevindt zich ergens anders, of misschien de pg_hba.conf moet worden gerepareerd.

Stap 1:Controleer of de database actief is

De opdracht kan variëren, afhankelijk van uw besturingssysteem. Maar op de meeste *ix-systemen zou het volgende werken, het zoekt naar postgres tussen alle lopende processen

ps -ef | grep postgres

Op mijn systeem, mac osx, spuugt dit uit

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

De laatste kolom toont de opdracht die is gebruikt om de server te starten, en de opties.

U kunt alle beschikbare opties bekijken om de postgres-server te starten door het volgende te gebruiken.

man postgres

Van daaruit zou je zien dat de opties -D en -r zijn respectievelijk de datadir &de logfilename .

Stap 2:Als de postgres-service actief is

Gebruik find om te zoeken naar de locatie van de socket, die ergens in de /tmp . zou moeten zijn

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

Als postgres actief is en socketverbindingen accepteert, zou het bovenstaande u de locatie van de socket moeten vertellen. Op mijn machine bleek het te zijn:

/tmp/.s.PGSQL.5432

Probeer dan verbinding te maken via psql met expliciet de locatie van dit bestand, bijv.

psql -h /tmp/ dbname

Stap 3:Als de service actief is, maar je ziet geen socket

Als u de socket niet kunt vinden, maar ziet dat de service actief is, controleer dan of het bestand pg_hba.conf lokale sockets toestaat.

Blader naar de datadir en je zou de pg_hba.conf . moeten vinden bestand.

Standaard zou u onderaan het bestand de volgende regels moeten zien:

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

Als u het niet ziet, kunt u het bestand wijzigen en de postgre-service opnieuw starten.



  1. Hoe rijen te ordenen op groepssom in SQL

  2. Hoe kap je alle tabellen in een database af met TSQL?

  3. Logische replicatiepartitionering met PostgreSQL 13

  4. pgAdmin-alternatieven - GUI ClusterControl voor PostgreSQL-databasebeheer