with rails proyecto postgres new myapp mac how crear ruby-on-rails postgresql authentication

ruby-on-rails - proyecto - ruby on rails with postgresql



PG:: ConnectionBad: fe_sendauth: sin contraseƱa (4)

Cambie el código de la siguiente manera y funcionará

pg_hba.conf: # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust

Debajo de su explicación:

confianza

Permitir la conexión incondicionalmente. Este método permite a cualquier persona que pueda conectarse al servidor de base de datos PostgreSQL iniciar sesión como cualquier usuario de PostgreSQL que desee, sin la necesidad de una contraseña o cualquier otra autenticación.

md5

Requerir que el cliente proporcione una contraseña con hash doble MD5 para la autenticación.

consulte para obtener más información here

Cuando intento ejecutar "rake test" en una base de datos local de postgres, arroja la excepción anterior.

Aquí está mi archivo pg_hba.conf: # Inicio de sesión administrativo de base de datos por socket de dominio Unix local todos los pares de postgres

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all username peer local myapp_dev myapp md5 local myapp_test myapp md5 local myapp_prod myapp md5 #local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5

y aquí está la sección relevante de mi database.yml

test: adapter: postgresql database: myapp_test pool: 5 timeout: 5000 host: localhost username: username password:

En la base de datos real.yml, ''nombre de usuario'' se reemplaza con mi nombre de usuario real con el que estoy conectado. Dado que el método de autenticación se define como ''peer'', no se requiere contraseña.

También me he tomado la precaución de reiniciar Postgres

sudo -u postgres pg_ctlcluster 9.3 main restart

¿Qué más me echo de menos aquí?


Me encontré con esta pregunta, también. Comprobé la configuración de mi base de datos, /var/www/myproject/shared/config/database.yml, production: adapter: postgresql pool: 5 timeout: 5000 encoding: utf8 host: localhost database: myproject username: myname password: <%= ENV[''name_DATABASE_PASSWORD''] %>

Encontré que el último párrafo es incorrecto, el código correcto es

password: <%= ENV[''myproject_DATABASE_PASSWORD''] %>


Si su hb_conf ya ha sido modificado para forzar las contraseñas, asegúrese de que la configuración de la base de datos de la aplicación de sus rieles incluya una contraseña tanto en entornos de desarrollo como de prueba.

default: &default adapter: postgresql encoding: unicode pool: 5 host: localhost username: your_user password: your_password development: <<: *default database: your_db_development test: <<: *default database: your_db_test production: url: <%= ENV[''DATABASE_URL''] %>

Recibí este error cuando no proporcioné una contraseña para la base de datos de prueba.


localhost como host se refiere a una conexión TCP, lo que significa que el método auth es md5 (se requiere contraseña) según su pg_hba.conf :

# IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5

Para que se tome el método de peer , necesitarás conectarte a través de sockets de dominio Unix, y como parece que estás usando un sistema operativo similar a Debian, eso significa poner /var/run/postgresql en el campo de host , o nada en absoluto (es el valor predeterminado a menos que las variables de entorno indiquen lo contrario).

EDITAR: si utiliza URI de base de datos (compatible desde Rails-4.1, como se anunció en http://weblog.rubyonrails.org/2014/4/8/Rails-4-1/ ), la sintaxis podría ser:

  • para localhost:
    test: "postgresql://localhost/myapp_test"

  • para el dominio de socket predeterminado de Unix (campo de host dejado vacío):
    test: "postgresql:///myapp_test"