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 postgresql
servidor instalado en mi sistema como usuario postgres
. Solo puedo iniciar sesión si lo especifico -h localhost
. Mientras que la psql
documentació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 psql
documentación?
postgresql
12.04
saji89
fuente
fuente
.psqlrc
que especifique los valores predeterminados, o simplemente editepg_hba.conf
para usar lamd5
autenticación paralocal
conexiones (socket de Unix). Consulte la documentación parapg_hba.conf
ypsql
.Respuestas:
De hecho, funciona según lo documentado.
Cuando se omite el nombre de host, se
psql
conecta 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:
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.conf
archivo.lo que normalmente debe hacer en Ubuntu cuando inicia sesión como usuario normal, pero es el administrador del sistema:
fuente
sudo -u postgresql psql
asudo -u postgres psql
. Traté de editar. Pero no pudo, ya que la edición solo tiene <6 caracteres.Si no le gusta la conexión predeterminada a través de un socket Unix, puede configurar la variable de entorno
PGHOST
. yo tengoen 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.htmlfuente