with tutorial framework español djangoproject desde con cero applications ruby-on-rails postgresql

ruby-on-rails - framework - tutorial django



Autenticación PG Peer falló (4)

"Autenticación entre pares" significa que está utilizando un socket de Unix y espera que el usuario de Unix que se conecta tenga el mismo nombre de usuario de Unix que el nombre de usuario de Postgresql.

Debido a que su nombre de usuario local de Unix está funkdified y usted está tratando de conectarse como usuario, se goodsounds en una conexión de socket de dominio de Unix ( local ) donde su pg_hba.conf especifica peer autenticación de peer , Pg rechaza correctamente su intento de conexión.

Este es el comportamiento predeterminado para muchas instalaciones cuando se usan sockets de unix.

Usted puede:

  • Conéctese a través de TCP / IP especificando un nombre de host en la configuración de conexión de su base de datos;
  • edite pg_hba.conf para usar la autenticación de contraseña md5 lugar de peer autenticación de peer para sockets Unix (tipo de conexión local ), por lo que Pg acepta la autenticación de contraseña; o
  • Conéctese con un nombre de usuario de PostgreSQL igual que su nombre de usuario de Unix y cree el usuario en PostgreSQL si aún no existe.

Consulte los documentos para pg_hba.conf y el resto del capítulo de autenticación del cliente de la documentación .

Tenga en cuenta que los cambios en pg_hba.conf no surten efecto de inmediato, debe reiniciar o al menos volver a cargar PostgreSQL para volver a leer pg_hba.conf .

Oh, también, si tiene varias versiones de PostgreSQL instaladas, es posible que tenga un libpq de una versión y un servidor de otra. En este caso, asegúrese de que la ubicación para el socket de Unix al que se conecta libpq de forma predeterminada sea la misma que la del unix_socket_directories del servidor o anule con (por ejemplo) host=/tmp en su cadena de conexión.

Tengo un usuario con contraseña que coincide con el especificado en database.yml

postgres=# select * from pg_user ; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+---------+----------+----------+----------- goodsounds | 16386 | t | t | t | t | ******** | | postgres | 10 | t | t | t | t | ******** | | (2 rows)

Este es el error

funkdified@vizio ~/rails_projects/goodsounds.org $ rake db:create FATAL: Peer authentication failed for user "goodsounds"

Aquí está mi pg_hba.conf:

# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust

Anteriormente, la "confianza" anterior era md5, pero cambié para ver si eso ayudaría.

Aquí está mi database.yml:

# PostgreSQL. Versions 8.2 and up are supported. # # Install the pg driver: # gem install pg # On Mac OS X with macports: # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config # On Windows: # gem install pg # Choose the win32 build. # Install PostgreSQL and put its /bin directory on your path. # # Configure Using Gemfile # gem ''pg'' # development: adapter: postgresql encoding: unicode database: goodsounds_development pool: 5 username: goodsounds password: test # Connect on a TCP socket. Omitted by default since the client uses a # domain socket that doesn''t need configuration. Windows does not have # domain sockets, so uncomment these lines. host: localhost port: 5432 # Schema search path. The server defaults to $user,public #schema_search_path: myapp,sharedapp,public # Minimum log levels, in increasing order: # debug5, debug4, debug3, debug2, debug1, # log, notice, warning, error, fatal, and panic # The server defaults to notice. #min_messages: warning # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: postgresql encoding: unicode database: goodsounds_test pool: 5 username: goodsounds password: test production: adapter: postgresql encoding: unicode database: goodsounds_production pool: 5 username: goodsounds password: test


Estaba enfrentando el mismo problema en la máquina de Ubuntu, así que eliminé este error siguiendo algunos pasos. Cambiar a usuario postgres

$ sudo su - postgres

le pedirá la contraseña y por defecto la contraseña es postgres

Después de cambiar el usuario a postgres, abra la consola psql

$ psql

así que verifique la versión de postgres si hay varias versiones disponibles

psql=# select VERSION(); PostgreSQL 9.1.13 on x86_64-unk.... # so version is 9.1

Ahora abre postgres user

vim /etc/postgresql/9.1/main/pg_hba.conf

9.1 es el comando de retorno de versión superior

y reemplazar

local all postgres peer

a

local all postgres md5

sudo service postgresql restart

También escribo pasos en mi blog.

http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html


Si la "autenticación de igual" no funciona, intente la autenticación md5.

Para especificar el host intente algo como esto:

psql -d <dbname> -U <username> -h <hostname>

o esto:

psql -d <dbname> -U <username> -h <hostname> -W


edite /etc/postgresql/9.3/main/pg_hba.conf

# "local" is for Unix domain socket connections only local all all peer

cambia a la línea inferior y funciona para mí

# "local" is for Unix domain socket connections only local all all md5