2010-12-30 14 views
16

he creado un usuario de esta manera:No se puede iniciar sesión en la base de datos PostgreSQL

create user blog with password 'blog'; 

Entonces hice que el propietario de una base de datos:

alter database blog_development owner to blog; 

Entonces traté de entrar y que no me paré no funciona:

$ psql -d blog_development -U blog -W 
Password for user blog: 
psql: FATAL: Ident authentication failed for user "blog" 

¿Alguna idea de por qué?

Una cosa que he intentado es la edición de pg_hba.conf

76 # Database administrative login by UNIX sockets 
77 local all    postgres       ident 
78 
79 # TYPE DATABASE   USER  CIDR-ADDRESS   METHOD 
80 
81 # "local" is for Unix domain socket connections only 
82 local all    all        ident 
83 # IPv4 local connections: 
84 host all    all   127.0.0.1/32   md5 
85 host blog_development blog  127.0.0.1/32   md5 
86 # IPv6 local connections: 
87 host all    all   ::1/128    md5 

Línea 85 es la que he añadido. Reinicié PostgreSQL después de eso, pero no pareció cambiar nada.

+0

Curiosamente, puedo iniciar sesión de forma remota a través de pgAdmin III (después de agregar otra línea a 'pg_hba.conf') pero sigo sin poder iniciar sesión desde la línea de comandos. –

+0

Además, me puedo conectar a través de un script PHP. Estoy empezando a pensar que estoy intentando iniciar sesión de la manera incorrecta. –

Respuesta

31

Estaba tratando de conectar de la manera incorrecta. Aquí está la manera correcta:

psql -h localhost -U blog -d blog_development 
+3

, sí, sin un -h host pgsql intenta iniciar sesión en los sockets locales de Unix, es decir, la línea que comienza con local y termina con ident es lo que se interpone en el camino. –

1

¿Agregaste al usuario a pg_hba.conf? Aquí está la documentación.

http://www.postgresql.org/docs/8.4/static/auth-pg-hba-conf.html

Realmente no recuerdo la sintaxis exacta, pero se debe añadir algo como esto:

host blog_development  blog 127.0.0.1/32 md5 

puede que tenga que recargar o reiniciar el servidor de modo que se vuelve a leer pg_hba.conf.

+0

Hmm. Intenté eso pero no pareció funcionar. Ver mi edición para ver lo que he cambiado. –

5

psql utiliza un zócalo local de forma predeterminada (echa un vistazo a la bandera -h en el hombre) - que debe coincidir con la línea 82 cuando se conecte

82 locales todos todos ident.

ident necesita un usuario real en el sistema para comprobar la contraseña. Entonces puede conectarse por host o agregar un usuario para que coincida con su nueva línea de configuración.

+0

O cambie el identificador local de todos a otra cosa también. –

4

Antes de la línea 82, añadir

local blog_development blog md5 

y volver a cargar, o conectarse a través de -h localhost.

Cuestiones relacionadas