Saltar a Comentarios

Sábado, Enero 29th, 2011

FATAL: Ident authentication failed for user XXXXX

He instalado postgres en un servidor CentOS, luego he creado el usuario, contraseña y bbbdd. Pero si me intento conectar por PHP, shell o navicat usando la siguiente sintaxis:

psql -d mibbdd -U usuario -W 

Me devuelve el siguinte error:

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

¿Como corregir este error?
Abrimos el fichero de configuración de postgres: /var/lib/pgsql/data/pg_hba.conf :

# vi /var/lib/pgsql/data/pg_hba.conf

El fichero controla

  1. Desde que host se permite conectar.
  2. Que clientes están autentificados.
  3. Que usuario the postgres pueden usar.
  4. A qué BBDD pueden acceder

Por defecto, PostgreSQL usa autentificación basada en IDENT. Todo lo que debes hacer es permitir al usuario y contraseña que utilizas para tu conexión. IDENT nunca permitirá que entres a través de las opciones -U y -W. Concatena el permiso al fichero para que puedan entrar todos los usuarios del localhost.

local	all	all	trust
host	all	127.0.0.1/32	trust

Guarda y cierra el fichero, luego restaura el servicio postgreSQL:

# service postgresql restart

Ahora, deberías ser capaz de entrar usando el comando:

# psql -d myDb -U username -W

No hay entradas relacionadas

2 Comentarios

  • osoh
    Debian IceWeasel Debian IceWeasel 3.6.13 en Linux Linux
    Enero 30th, 2011 at 11:02

    Hola Juanra,

    ¿Llegaste a probar a hacer “psql -d mibbdd -U usuario -W -h localhost”? Debería intentar conectarse por TCP/IP y entonces sí que te pediría autenticación (si tienes una línea como esta):

    host all all 127.0.0.1/32 md5

    Si eres el único usuario de esa máquina, no hay problema. Pero si hay más usuarios, ponerle un «trust» a la conexión «local» no es una buena idea.

    Un saludo.

    PD: hablo u poco de memoria, así que con la misma estoy equivocado.

  • Juanra
    Mozilla Firefox Mozilla Firefox 3.6.13 en Ubuntu Linux Ubuntu Linux
    Enero 30th, 2011 at 15:18

    Tienes toda la razón :), pero en este caso si era el único administrador de la máquina.