¿Cómo hacer que psql tenga el valor predeterminado localhost?

10

Tengo el siguiente escenario:

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=# 

Estoy tratando de iniciar sesión en el postgresqlservidor instalado en mi sistema como usuario postgres. Solo puedo iniciar sesión si lo especifico -h localhost. Mientras que la psqldocumentación dice que:

Si omite el nombre de host, psql se conectará a través de un socket de dominio Unix a un servidor en el host local, o mediante TCP / IP a localhost en máquinas que no tienen sockets de dominio Unix.

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

¿Por qué no puedo iniciar sesión sin especificar el host? ¿Hay algún archivo de configuración que necesite algún cambio para que las cosas ocurran como se indica en la psqldocumentación?

saji89
fuente
Cree un .psqlrcque especifique los valores predeterminados, o simplemente edite pg_hba.confpara usar la md5autenticación para localconexiones (socket de Unix). Consulte la documentación para pg_hba.confy psql.
Craig Ringer

Respuestas:

7

De hecho, funciona según lo documentado.

Cuando se omite el nombre de host, se psqlconecta al socket de dominio Unix cuya ruta se compila. Esa parte funciona en su caso; de lo contrario, generaría un mensaje de error diferente al que muestra la pregunta.

El mensaje de error en la pregunta:

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

se relaciona con el hecho de que solo el usuario postgres de Unix tiene permiso para conectarse como el usuario postgres de la base de datos cuando usa un socket de dominio Unix. Esto se configura en el pg_hba.confarchivo.

lo que normalmente debe hacer en Ubuntu cuando inicia sesión como usuario normal, pero es el administrador del sistema:

$ sudo -u postgres psql
Daniel Vérité
fuente
1
Gracias .. Por favor cambia sudo -u postgresql psqla sudo -u postgres psql. Traté de editar. Pero no pudo, ya que la edición solo tiene <6 caracteres.
saji89
13

Si no le gusta la conexión predeterminada a través de un socket Unix, puede configurar la variable de entorno PGHOST. yo tengo

export PGHOST="db"

en mi ~/.bashrc, para conectarse al servidor con ese nombre. Se documentan algunas variables de entorno más prácticas en http://www.postgresql.org/docs/9.5/static/libpq-envars.html

Andrés
fuente