web-dev-qa-db-fra.com

Comment faire en sorte que psql utilise par défaut localhost?

J'ai le scénario suivant:

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

J'essaie de me connecter au serveur postgresql installé dans mon système en tant qu'utilisateur postgres. Je ne peux me connecter que si je spécifie -h localhost. Considérant que la documentation psql indique que:

Si vous omettez le nom de l'hôte, psql se connectera via un socket de domaine Unix à un serveur de l'hôte local ou via TCP/IP vers localhost sur des ordinateurs ne disposant pas de sockets de domaine Unix.

Réf: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP- PSQL-CON

Pourquoi ne puis-je pas me connecter sans spécifier l'hôte? Existe-t-il un fichier de configuration nécessitant des modifications, comme indiqué dans la documentation psql?

8
saji89

En fait, cela fonctionne comme documenté.

Lorsque le nom d'hôte est omis, psql se connecte au socket de domaine Unix dont le chemin est compilé. Cette partie fonctionne dans votre cas, sinon elle produirait un message d'erreur différent de celui indiqué par la question.

Le message d'erreur dans la question:

psql: FATAL:  Ident authentication failed for user "postgres"

cela concerne le fait que seul l'utilisateur postgres sous Unix a l'autorisation de se connecter en tant qu'utilisateur postgres de la base de données lors de l'utilisation d'un socket de domaine Unix. Ceci est configuré dans le fichier pg_hba.conf.

ce que vous devriez normalement faire dans Ubuntu lorsque vous êtes connecté en tant qu'utilisateur normal, mais que vous êtes l'administrateur du système:

$ Sudo -u postgres psql
6
Daniel Vérité

Si vous n'aimez pas le défaut de connexion via un socket Unix, vous pouvez définir la variable d'environnement PGHOST. j'ai

export PGHOST="db"

dans mon ~/.bashrc, pour vous connecter au serveur avec ce nom. Quelques variables d’environnement plus pratiques sont documentées à l’adresse http://www.postgresql.org/docs/9.5/static/libpq-envars.html

12
Andrew