PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :Pourquoi psql ne peut pas se connecter au serveur ?

L'erreur indique que l'utilitaire psql ne trouve pas le socket pour se connecter à votre serveur de base de données. Soit vous n'avez pas le service de base de données en arrière-plan, soit le socket est situé ailleurs, ou peut-être le pg_hba.conf doit être réparé.

Étape 1 :Vérifiez que la base de données est en cours d'exécution

La commande peut varier en fonction de votre système d'exploitation. Mais sur la plupart des systèmes *ix, ce qui suit fonctionnerait, il rechercherait postgres parmi tous les processus en cours d'exécution

ps -ef | grep postgres

Sur mon système, mac osx, cela crache

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

La dernière colonne affiche la commande utilisée pour démarrer le serveur et les options.

Vous pouvez consulter toutes les options disponibles pour démarrer le serveur postgres en utilisant ce qui suit.

man postgres

À partir de là, vous verriez que les options -D et -r sont respectivement le datadir &le logfilename .

Étape 2 :Si le service postgres est en cours d'exécution

Utilisez find pour rechercher l'emplacement du socket, qui devrait être quelque part dans le /tmp

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

Si postgres est en cours d'exécution et accepte les connexions socket, ce qui précède devrait vous indiquer l'emplacement du socket. Sur ma machine, il s'est avéré être :

/tmp/.s.PGSQL.5432

Ensuite, essayez de vous connecter via psql en utilisant explicitement l'emplacement de ce fichier, par exemple.

psql -h /tmp/ dbname

Étape 3 :Si le service est en cours d'exécution mais que vous ne voyez pas de socket

Si vous ne trouvez pas le socket, mais voyez que le service est en cours d'exécution, vérifiez que le fichier pg_hba.conf autorise les sockets locaux.

Accédez au datadir et vous devriez trouver le pg_hba.conf fichier.

Par défaut, vers le bas du fichier, vous devriez voir les lignes suivantes :

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

Si vous ne le voyez pas, vous pouvez modifier le fichier et redémarrer le service postgres.