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
- Desde que host se permite conectar.
- Que clientes están autentificados.
- Que usuario the postgres pueden usar.
- 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
2 comentarios
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.
Tienes toda la razón :), pero en este caso si era el único administrador de la máquina.