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ñamd5
lugar depeer
autenticación depeer
para sockets Unix (tipo de conexiónlocal
), 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