Comment faire psql par défaut à localhost?

10

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 postgresqlserveur installé sur mon système en tant qu'utilisateur postgres. Je ne peux me connecter que si je le précise -h localhost. Alors que la psqldocumentation dit que:

Si vous omettez le nom d'hôte, psql se connectera via un socket de domaine Unix à un serveur sur l'hôte local, ou via TCP / IP à localhost sur les machines qui n'ont pas de socket 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, y a-t-il un fichier de configuration qui nécessite des modifications pour que les choses se produisent comme indiqué dans la psqldocumentation?

saji89
la source
Créez un .psqlrcqui spécifie les valeurs par défaut - ou modifiez simplement pg_hba.confpour utiliser l' md5authentification pour les localconnexions (socket Unix). Voir la documentation de pg_hba.confet psql.
Craig Ringer

Réponses:

7

En fait, cela fonctionne comme documenté.

Lorsque le nom d'hôte est omis, se psqlconnecte 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 ce que la question montre.

Le message d'erreur dans la question:

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

est lié au fait que seul l'utilisateur postgres d'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 pg_hba.conffichier.

ce que vous devez généralement 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
Daniel Vérité
la source
1
Merci .. Veuillez changer sudo -u postgresql psqlpour sudo -u postgres psql. J'ai essayé d'éditer. Mais cela n'a pas pu, car la modification ne contient que <6 caractères.
saji89
13

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

export PGHOST="db"

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

Andrew
la source