Me sale el error:
FATAL: Peer authentication failed for user "postgres"
cuando trato de hacer que postgres funcione con Rails.
Aquí está mi pg_hba.conf
, mi database.yml
y un volcado de la traza completa .
Cambié la autenticación a md5 en pg_hba e intenté diferentes cosas, pero ninguna parece funcionar.
También intenté crear un nuevo usuario y una base de datos según Rails 3.2, FATAL: La autenticación de pares falló para el usuario (PG :: Error)
Pero no aparecen en pgadmin o incluso cuando corro sudo -u postgres psql -l
.
¿Alguna idea de a dónde me estoy yendo mal?
ruby-on-rails
postgresql
orderof1
fuente
fuente
localhost
pero puede tener éxito127.0.0.1
.host: localhost
eldatabase.yml
archivo.Respuestas:
El problema sigue siendo su
pg_hba.conf
archivo (/etc/postgresql/9.1/main/pg_hba.conf*
).Esta línea:
Debiera ser:
* Si no puede encontrar este archivo, la ejecución
locate pg_hba.conf
debería mostrarle dónde está el archivo.Después de modificar este archivo, no olvide reiniciar su servidor PostgreSQL. Si estás en Linux, eso sería
sudo service postgresql restart
.Estas son breves descripciones de ambas opciones de acuerdo con los documentos oficiales de PostgreSQL sobre métodos de autenticación .
Autenticación entre pares
Autenticación de contraseña
Ubicación de muestra para
pg_hba.conf
:/etc/postgresql/9.1/main/pg_hba.conf
fuente
/etc/init.d/postgresql reload
/etc/postgresql/9.1/main/pg_hba.conf
sudo service postgreql restart
también funciona.Después de instalar Postgresql hice los siguientes pasos.
abra el archivo
pg_hba.conf
para Ubuntu en el que estará/etc/postgresql/9.x/main
y cambie esta línea:a
Reiniciar el servidor
Inicie sesión en psql y configure su contraseña
Finalmente cambiar el
pg_hba.conf
dea
Después de reiniciar el servidor postgresql, puede acceder a él con su propia contraseña
Detalles de los métodos de autenticación:
para mayor referencia ver aquí
fuente
sudo passwd postgres
Si se conecta a través de localhost (127.0.0.1) no debería experimentar ese problema en particular. No muckearía mucho con el pg_hba.conf, sino que ajustaría su cadena de conexión:
donde alguien es su usuario al que se está conectando y la base de datos es la base de datos a la que su usuario tiene permiso para conectarse.
Esto es lo que hago en Debian para configurar postgres:
¡Disfrutar!
fuente
host: 127.0.0.1
de predeterminado a localhost en config / database.yml - está en la misma máquina, así que no entiendo por qué¡Esto ha funcionado para mí!
fuente
Si tiene un problema, necesita localizarlo
pg_hba.conf
. El comando es:find / -name 'pg_hba.conf' 2>/dev/null
y luego cambia el archivo de configuración:
Postgresql 9.3
Postgresql 9.4
El siguiente paso es: reiniciar su instancia de db:
service postgresql-9.3 restart
Si tiene algún problema, debe configurar la contraseña nuevamente:
ALTER USER db_user with password 'db_password';
fuente
En mi caso:
Entonces esto se cambiará a:
Inicio de sesión administrativo de base de datos por socket de dominio Unix local todos los pares de postgres
Esta:
Inicio de sesión administrativo de base de datos por socket de dominio Unix local todos los postgres md5
Luego reinicie el servidor pg:
$> sudo service postgresql restart
A continuación se muestra una lista de MÉTODOS utilizados para conectarse con postgres:
Nota: Si aún no ha creado su usuario de postgres. Cree eso y ahora puede acceder al servidor postgres utilizando las credenciales de ese usuario.
CONSEJO: Si no funciona después de reiniciar Postgres, cierre la terminal y ábrala nuevamente.
fuente
Esto resolvió mi problema
fuente
Yo tuve el mismo problema.
La solución de depa es absolutamente correcta.
Solo asegúrese de tener un usuario configurado para usar PostgreSQL.
Revisa el archivo:
El permiso de este archivo debe otorgarse al usuario con el que haya registrado su psql.
Más lejos. Si eres bueno hasta ahora ...
Actualice según las instrucciones de @ depa.
es decir
y luego hacer cambios.
fuente
-rw-r----- 1 postgres postgres 4640 Jun 16 09:59 /etc/postgresql/9.5/main/pg_hba.conf
Si desea mantener la configuración predeterminada pero desea la autenticación md5 con conexión de socket para una conexión de usuario / base de datos específica, agregue una línea "local" ANTES de la línea "local todos / todos":
fuente
Estaba moviendo el directorio de datos en un servidor clonado y tenía problemas para iniciar sesión como postgres. Restablecer la contraseña de postgres como esta funcionó para mí.
fuente
Las ediciones anteriores funcionaron para mí, después de que descubrí que necesitaba reiniciar el servidor postgres después de hacerlas. Para ubuntu:
fuente
Cambiar el método de pares de confianza en pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | línea 85) resuelve el problema. Agregar md5 solicita una contraseña, por lo tanto, si hay un requisito para evitar el uso de contraseñas, use la confianza en lugar de md5 .
fuente
Uso
host=localhost
en conexión.fuente
el siguiente comando funciona para mí:
fuente
-W --password Force psql to prompt for a password before connecting to a database. This option is never essential, since psql will automatically prompt for a password if the server demands password authentication. However, psql will waste a connection attempt finding out that the server wants a password. In some cases it is worth typing -W to avoid the extra connection attempt.
Solo necesita configurar METHOD para confiar.
Y vuelva a cargar el servidor postgres.
Los cambios en pg_hba.conf no requieren el servidor RESTART postgres. solo RELOAD.
fuente
Muchas de las otras respuestas pertenecen a la configuración en los diversos archivos de configuración, y las que pertenecen a la
pg_hba.conf
aplicación se aplican y son 100% correctas. Sin embargo, asegúrese de modificar los archivos de configuración correctos .Como otros han mencionado, las ubicaciones del archivo de configuración se pueden anular con varias configuraciones dentro del archivo de configuración principal, así como proporcionar una ruta al archivo de configuración principal en la línea de comando con la
-D
opción.Puede usar el siguiente comando mientras está en una sesión de psql para mostrar dónde se están leyendo sus archivos de configuración (suponiendo que pueda iniciar psql). Este es solo un paso de solución de problemas que puede ayudar a algunas personas:
También debe asegurarse de que el directorio de inicio para su usuario de postgres esté donde espera que esté. Digo esto porque es bastante fácil pasar por alto esto debido al hecho de que su mensaje mostrará '
~
' en lugar de la ruta real de su directorio de inicio, por lo que no es tan obvio. Muchas instalaciones predeterminan el directorio de inicio del usuario postgres a/var/lib/pgsql
.Si no está configurado a lo que se supone que es, detenga el servicio postgresql y use el siguiente comando mientras está conectado como root. También asegúrese de que el usuario de postgres no haya iniciado sesión en otra sesión:
Finalmente, asegúrese de que su variable PGDATA esté configurada correctamente escribiendo
echo $PGDATA
, que debería generar algo similar a:Si no está configurado o muestra algo diferente de lo que espera que sea, examine sus archivos de inicio o RC como .profile o .bash.rc; esto variará mucho dependiendo de su sistema operativo y su shell. Una vez que haya determinado la secuencia de comandos de inicio correcta para su máquina, puede insertar lo siguiente:
Para mi sistema, coloqué esto en
/etc/profile.d/profile.local.sh
para que fuera accesible para todos los usuarios.¡Ahora debería poder iniciar la base de datos como de costumbre y todas las configuraciones de ruta psql deberían ser correctas!
fuente
pg_config es para información de compilación, para ayudar a extensiones y programas de clientes a compilar y vincular contra PostgreSQL. No sabe nada sobre las instancias activas de PostgreSQL en la máquina, solo los binarios.
pg_hba.conf puede aparecer en muchos otros lugares dependiendo de cómo se instaló Pg. La ubicación estándar es pg_hba.conf dentro del directorio de datos de la base de datos (que podría estar en / home, / var / lib / pgsql, / var / lib / postgresql / [versión] /, / opt / postgres /, etc., etc.) pero los usuarios y empaquetadores pueden ponerlo donde quieran. Desafortunadamente.
Las únicas formas válidas de encontrar pg_hba.conf es preguntarle a una instancia de PostgreSQL en ejecución dónde está pg_hba.conf, o preguntarle al administrador del sistema dónde está. Ni siquiera puede confiar en preguntar dónde está el datadir y analizar postgresql.conf porque un script de inicio podría pasar un parámetro como -c hba_file = / some / other / path al iniciar Pg.
Lo que quieres hacer es preguntarle a PostgreSQL:
Este comando debe ejecutarse en una sesión de superusuario, por lo que para las secuencias de comandos de shell puede escribir algo como:
y configure las variables de entorno PGUSER, PGDATABASE, etc. para garantizar que la conexión sea correcta.
Sí, este es un problema de huevo y gallina, ya que si el usuario no puede conectarse (por ejemplo, después de arruinar la edición de pg_hba.conf) no puede encontrar pg_hba.conf para solucionarlo.
Otra opción es mirar la salida del comando ps y ver si el argumento del directorio de datos postmaster -D está visible allí, por ejemplo
dado que pg_hba.conf estará dentro del directorio de datos (a menos que esté en Debian / Ubuntu o alguna derivada y esté usando sus paquetes).
Si está apuntando específicamente a sistemas Ubuntu con PostgreSQL instalado desde paquetes Debian / Ubuntu, se vuelve un poco más fácil. No tiene que lidiar con una Pg compilada a mano desde la fuente para la que alguien ha iniciado un datadir en su directorio de inicio, o una instalación de EnterpriseDB Pg en / opt, etc. Puede preguntarle a pg_wrapper, Debian / Ubuntu multi -version Pg manager, donde PostgreSQL está usando el comando pg_lsclusters de pg_wrapper.
Si no puede conectarse (Pg no se está ejecutando, o necesita editar pg_hba.conf para conectarse), tendrá que buscar en el sistema archivos pg_hba.conf. En Mac y Linux, algo como sudo find / -type f -name pg_hba.conf servirá. Luego verifique el archivo PG_VERSION en el mismo directorio para asegurarse de que sea la versión correcta de PostgreSQL si tiene más de uno. (Si pg_hba.conf está en / etc /, ignore esto, es el nombre del directorio principal). Si tiene más de un directorio de datos para la misma versión de PostgreSQL, tendrá que mirar el tamaño de la base de datos, verifique la línea de comando de los postgres en ejecución desde ps para ver si el argumento del directorio de datos -D coincide con el lugar donde está editando, etc. . /ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711
fuente
Mi problema fue que no escribí ningún servidor. Pensé que es un valor predeterminado debido al marcador de posición, pero cuando escribí localhost funcionó.
fuente
Si está intentando localizar este archivo en Cloud 9, puede hacerlo
Presione
I
para editar / insertar, presioneESC
3 veces y escriba:wq
guardará el archivo y saldráfuente
Si se enfrenta a este problema con los rieles y sabe que ya ha creado ese nombre de usuario con contraseña junto con los derechos correctos, solo tiene que poner los siguientes al final de su archivo database.yml.
el archivo general se verá a continuación
No necesita tocar su
pg_hba.conf
archivo en absoluto. Codificación felizfuente
La solución más simple sin cambiar las configuraciones. (ubuntu) Cambiar usuario, luego conectarse a la base de datos cli.
tomado de https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
fuente