2010-12-01 8 views
27

Tengo un ubuntu 10.10 fresca instalar con todas las actualizaciones y PostgreSQL 8.4
Con el fin de PostgreSQL para aceptar conexiones de ingreso de contraseña + i ha configurado a través de:¿Cómo se configura postgresql para que acepte el inicio de sesión + autenticación de contraseña?

sudo su postgres 
psql 
ALTER USER postgres WITH PASSWORD 'password'; 
CREATE DATABASE myapp; 
\q 
exit 
sudo vi /etc/postgresql/8.4/main/pg_hba.conf 
change "local all all indent" to "local all all trust" 

Pero, sorprendentemente, esto no está funcionando! El comando

psql -U postgres password 

Evalúa con el error:

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

¿Alguna pista de cómo puedo hacer que el psql -U a trabajar?

Respuesta

35

Probablemente sea una buena idea dejar al usuario "postgres" con autenticación ident. De manera predeterminada, creo que Ubuntu utiliza el usuario "postgres" para realizar actualizaciones, copias de seguridad, etc., y eso requiere que pueda iniciar sesión sin una contraseña especificada.

Recomiendo crear otro usuario (probablemente con su propio nombre de usuario) y otorgarle privilegios de administrador también. Luego puede usar ese usuario con contraseñas en conexiones locales.

Esto es lo que las partes pertinentes de mi pg_hba.conf ven como:

# allow postgres user to use "ident" authentication on Unix sockets 
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later) 
local all postgres       ident sameuser 
# allow all other users to use "md5" authentication on Unix sockets 
local all all        md5 
# for users connected via local IPv4 or IPv6 connections, always require md5 
host all all  127.0.0.1/32   md5 
host all all  ::1/128    md5 

También tenga en cuenta que psql -U postgres password no va a hacer lo que quiera. La contraseña nunca debe especificarse en la línea de comando. Eso intentará iniciar sesión como usuario "postgres" a una base de datos llamada "contraseña".

En su lugar, debe usar psql -U postgres myapp. Postgres le pedirá automáticamente una contraseña, si está configurada correctamente para requerir una.

+0

¿Cuál es la forma correcta de agregar nuevos usuarios con privilegios de administrador? – grigoryvp

+0

Agregando usuario con "CREAR USUARIO pulsador CON CONTRASEÑA 'contraseña'" y haciendo "psql -U puser" evalúa el error "psql: FATAL: base de datos" puser "no existe" – grigoryvp

+1

Generalmente es más fácil usar la línea de comando 'createuser' utilidad en lugar de crear el usuario con SQL. Tiene opciones para hacer que el usuario sea un administrador. Además, si le dice que la base de datos no existe, entonces el inicio de sesión fue exitoso. Por defecto, postgres intenta iniciar sesión en la base de datos de "inicio" del usuario, que tendría el mismo nombre que el usuario. Cree una base de datos "puser" o intente con 'psql -U puser myapp' para iniciar sesión en" myapp ". – cecilkorik

2

Creo que su archivo pg_ident.conf está mal configurado. Además, ha intentado

psql -U postgres -W 
+0

Mismo error (15 caracteres) – grigoryvp

0

Otra cosa que puede causar esto es credenciales caducadas. No creo que esto haya sucedido en la versión 8, pero en la versión 9 cuando creas un nuevo rol en pgadmin, se crea en un estado caducado y necesitas cambiar o borrar la fecha de caducidad de la función antes de que puedas iniciar sesión con eso.

Cuestiones relacionadas