rake db: crear errores, problema de autenticación con postgresql 8.4

Lo primero es lo primero, por favor disculpe mi noobness total. Realmente traté de encontrar una solución, pero ahora estoy atascado y completamente despistado.

estoy intentando implementar una aplicación de Rails 3 en un servidor distante; al desarrollar en mi máquina virtual local, no se mostró ningún problema. Pero ahora, cuando bash correr

rake db:create 

falla, con error (aquí traducido, ya que soy francés):

 FATAL : password authentication failed for user <> 

Aquí está mi database.yml:

 login: &login adapter: postgresql username: mylogin password: mypassword host: localhost port: 5432 encoding: UTF8 development: <<: *login database: somesite_development test: <<: *login database: somesite_test production: <<: *login database: somesite_production 

el usuario “mylogin” se creó postgre-side con la herramienta de línea de comandos “createuser”. Está autorizado para crear dbs. postgresql.conf configura el servidor para escuchar en localhost. He probado muchas cosas con pg_hba.conf, ninguna funcionó, sea cual sea el método utilizado (ident, password, md5) para el usuario “mylogin” en 127.0.0.1, la autenticación falla, aunque nunca he tenido problemas para conectar / crear dbs con psql.

Cualquier pista ?

EDITAR: está bien, descubrí lo increíblemente estúpido que he sido … ¡la contraseña para mi usuario simplemente no se estableció! Creo que olvidé el punto y coma después

ALTERE EL USUARIO xxxx CON CONTRASEÑA xxxx;

… vi esto solicitando “SELECT * FROM pg_shadow;” – el campo de contraseña estaba vacío. Tres días de mi vida desperdiciados por este error tonto …

También estuve atrapado en este problema por un tiempo realmente largo, y fui a una variedad de enlaces (incluidos los que se ofrecen en esta publicación) para intentar encontrar la respuesta, pero fue en vano. Sin embargo, la solución es muy simple. Si bien muchas de las otras respuestas estaban en el camino correcto, aquí están los pasos exactos para resolver el problema:

  1. Abra su archivo pg_hba.conf en un editor de texto de su elección. (Se encuentra en / etc / postgresql // main)

  2. Navegue a la línea que dice:

    # “local” es solo para conexiones de socket de dominio Unix

y pegar debajo de esto:

  local all all trust 

Esto confiará en todos los usuarios de Unix que intenten conectarse al servidor psql en la máquina local. (Lea la documentación en la parte superior de la página para obtener más información sobre la función de las columnas)

  1. Guarde el archivo pg_hba.conf y salga del editor de texto.

  2. Reinicie el servidor Postgresql ejecutando el comando:

    servicio postgresql reinicio

  3. Ahora intente iniciar un servidor psql ejecutando:

    psql -d -U (o “psql” para abreviar)

  4. Debería poder iniciar sesión sin problemas.

* Nota: Todo esto asume que tienes un nombre de usuario psql válido para iniciar sesión. Si no sigues los enlaces a continuación para configurar uno:

Configurando un usuario: http://erikonrails.snowedin.net/?p=274

Asegurándose de tener un usuario válido de postgres: http://archives.postgresql.org/pgsql-novice/2002-08/msg00072.php

Listado de todos los usuarios de psql existentes: Si está buscando el comando “LISTAR USUARIOS” o “MOSTRAR USUARIOS”, intente:

“select * from pg_user;” (cuando inicie sesión en psql)

¡Buena suerte!

bueno, descubrí lo increíblemente estúpido que he sido … ¡la contraseña para mi usuario simplemente no fue establecida! Creo que olvidé el punto y coma después

 ALTER USER xxxx WITH PASSWORD xxxx ; 

… vi esto solicitando “SELECT * FROM pg_shadow;” – el campo de contraseña estaba vacío. Tres días de mi vida desperdiciados por este error tonto …

Tuve el mismo problema En mi caso fue porque en mi archivo database.yml el nombre de usuario comenzó con mayúscula, pero en la base de datos todo estaba en minúscula.

Solución: al crear un usuario desde la línea de comandos de postgres, convierte todas las letras a minúsculas. Para usar letras mayúsculas, se deben usar comillas dobles .

Ejemplo:

create user AlbertEinstein; result = alberteinstein

vs

create user "AlbertEinstein"; result = AlbertEinstein

Aquí hay algunas instrucciones concisas que deberían funcionar para usted.

http://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/ .

Básicamente, debe configurar el método de autenticación para que el localhost “confíe”.

Debe otorgar a “myuser” en postgresql el privilegio “Puede crear objetos de base de datos”.

En pgadmin, se ve así:

introduzca la descripción de la imagen aquí

Después de llamar a rake db: create, puede quitar este privilegio.

En mi caso, encontré que una línea de regla de permisos de host posterior en el archivo pg_hba.conf había sobrepasado la línea local anterior. Estaba configurando correctamente la línea local para usar la autenticación md5, pero la línea del host se configuró para ident lo que cambié a md5

Como otros han enfatizado aquí, tenga en cuenta que el uso de la trust es un método inseguro, por lo que no debe usarlo en ninguna implementación de estilo de producción.