rails proyecto postgres new myapp digitalocean crear ruby-on-rails postgresql

ruby-on-rails - proyecto - rails postgres api



Obtención de error: la autenticación entre pares ha fallado para el usuario "postgres", cuando se intenta que pgsql funcione con rieles (18)

  1. Vaya a este /etc/postgresql/9.x/main/ y abra el archivo pg_hba.conf

En mi caso:

$> sudo nano /etc/postgresql/9.3/main/pg_hba.conf

  1. Reemplace el par con md5

Así que esto será cambiado a:

Inicio de sesión administrativo de la base de datos de Unix socket local todos los 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 md5

Esta:

Inicio de sesión administrativo de la base de datos por Unix socket local todos los postgres md5

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5

  1. Luego reinicie el servidor pg:

    $> sudo service postgresql restart

A continuación se muestra la lista de MÉTODOS utilizados para conectarse con postgres:

# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", # "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that # "password" sends passwords in clear text; "md5" is preferred since # it sends encrypted passwords.

Nota: Si aún no has creado tu usuario postgres. Cree eso y ahora puede acceder al servidor de Postgres usando las credenciales de ese usuario.

CONSEJO: Si no funciona después de reiniciar Postgres, cierre el terminal y vuelva a abrirlo.

Me estoy poniendo

FATAL: Peer authentication failed for user "postgres"

Cuando intento hacer postgres trabajar 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 y probé cosas diferentes, 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 entre pares falló para el usuario (PG :: Error)

Pero no aparecen en pgadmin o incluso cuando ejecuto sudo -u postgres psql -l

¿Alguna idea de dónde voy mal?


¡Esto me ha funcionado!

sudo -u postgres psql


Cambiar el MÉTODO para confiar en pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | line 85) resuelve el problema. Agregar md5 solicita una contraseña, por lo tanto, si existe un requisito para evitar el uso de contraseñas, use trust en lugar de md5 .


Después de instalar Postgresql hice los siguientes pasos.

  1. abra el archivo pg_hba.conf para Ubuntu que estará en /etc/postgresql/9.x/main y cambie esta línea:

local all postgres peer

a

local all postgres trust

  1. Reiniciar el servidor

sudo service postgresql restart

  1. Inicie sesión en psql y establezca su contraseña

psql -U postgres

ALTER USER postgres with password ''your-pass'';

  1. Finalmente cambiar el pg_hba.conf desde

local all postgres trust

a

local all postgres md5

Después de reiniciar el servidor postgresql, puede acceder a él con su propia contraseña

Detalles de los métodos de autenticación:

confianza: cualquier persona que pueda conectarse al servidor está autorizada para acceder a la base de datos

peer: use el nombre de usuario del sistema operativo del cliente como nombre de usuario de la base de datos para acceder a él.

md5 - autenticación basada en contraseña

para más referencia consulte aquí


El problema sigue siendo el archivo pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf*). Esta línea:

local all postgres peer

Debiera ser

local all postgres md5

* Si no puede encontrar este archivo, la ejecución de locate pg_hba.conf debería mostrarle dónde se encuentra el archivo.

Después de modificar este archivo, no olvide reiniciar su servidor PostgreSQL. Si está en Linux, ese sería el sudo service postgresql restart .

Estas son breves descripciones de ambas opciones según los documentos oficiales de PostgreSQL sobre métodos de autenticación .

Autenticación de pares

El método de autenticación de pares funciona obteniendo el nombre de usuario del sistema operativo del cliente del núcleo y usándolo como el nombre de usuario de base de datos permitido (con asignación de nombre de usuario opcional). Este método solo se admite en conexiones locales.

Autenticación de contraseña

Los métodos de autenticación basados ​​en contraseña son md5 y contraseña. Estos métodos funcionan de manera similar, excepto por la forma en que la contraseña se envía a través de la conexión, es decir, hash MD5 y texto claro respectivamente.

Si le preocupan los ataques de "sniffing" de contraseñas, entonces se prefiere md5. La contraseña simple siempre debe ser evitada si es posible. Sin embargo, md5 no se puede utilizar con la función db_user_namespace. Si la conexión está protegida por el cifrado SSL, la contraseña se puede usar de manera segura (aunque la autenticación del certificado SSL podría ser una mejor opción si una depende del uso de SSL).

Ubicación de muestra para pg_hba.conf

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


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 me funcionó

root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#/password Enter new password: Enter it again: postgres=#


Las ediciones anteriores funcionaron para mí, después de que me di cuenta de que necesitaba reiniciar el servidor de Postgres después de hacerlas. Para ubuntu:

sudo /etc/init.d/postgresql restart


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ó.


Muchas de las otras respuestas se refieren a la configuración en los diversos archivos de configuración, y las que pertenecen al pg_hba.conf aplican y son 100% correctas. Sin embargo, asegúrese de que está modificando los archivos de configuración correctos .

Como han mencionado otros, las ubicaciones de los archivos 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 comandos con la opción -D .

Puede usar el siguiente comando mientras se encuentra en una sesión de psql para mostrar dónde se leen los archivos de configuración (suponiendo que puede iniciar psql). Este es solo un paso de solución de problemas que puede ayudar a algunas personas:

select * from pg_settings where setting~''pgsql'';

También debe asegurarse de que el directorio de inicio de su usuario de Postgres esté donde espera que esté. Digo esto porque es bastante fácil pasarlo por alto debido a que su indicador 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 como se supone que debe ser, 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:

usermod -d /path/pgsql postgres

Finalmente, asegúrese de que su variable PGDATA esté configurada correctamente escribiendo echo $PGDATA , que debería generar algo similar a:

/path/pgsql/data

Si no está configurado, o muestra algo diferente de lo que espera que sea, examine los 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:

export PGDATA=/path/pgsql/data

Para mi sistema, puse 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 siempre y todas las configuraciones de ruta de psql deben ser correctas!


Si desea mantener la configuración predeterminada pero desea la autenticación md5 con conexión de socket para un usuario específico / db, agregue una línea "local" ANTES de la línea "local all / all":

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local username dbname md5 # <-- this line local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident


Si está intentando localizar este archivo en Cloud 9, puede hacerlo

sudo vim /var/lib/pgsql9/data/pg_hba.conf

Presione I para editar / insertar, presione ESC 3 veces y escriba :wq guardará el archivo y saldrá


Si se conecta a través de localhost (127.0.0.1) no debería experimentar ese problema en particular. No quise hacer mucho ruido con pg_hba.conf, sino que ajustaría su cadena de conexión:

psql -U someuser -h 127.0.0.1 database

donde algún usuario es su usuario con el que se está conectando y 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:

http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x) as root … root@www0:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list root@www0:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - root@www0:~# apt-get update root@www0:~# apt-get install postgresql-9.4 root@www0:~# su - postgres postgres@www0:~$ createuser --interactive -P someuser Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n postgres@www0:~$ createdb -O someuser database postgres@www0:~$ psql -U someuser -h 127.0.0.1 database

¡Disfrutar!


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 necesita poner el siguiente al final de su archivo database.yml.

host: localhost

archivo general se verá como a continuación

development: adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: root password: admin host: localhost

No necesitas tocar tu archivo pg_hba.conf en absoluto. Feliz codificacion


Si tiene un problema, necesita localizar su pg_hba.conf . El comando es:

find / -name ''pg_hba.conf'' 2>/dev/null

y después de eso 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, necesita volver a establecer la contraseña:

ALTER USER db_user with password ''db_password'';


Solo necesitas configurar MÉTODO para confiar.

#TYPE DATABASE USER ADDRESS METHOD local all all trust

Y recargar el servidor de postgres.

# service postgresql-9.5 reload

Los cambios en pg_hba.conf no requieren RESTART postgres server. sólo vuelve a cargar.


Use host=localhost en la conexión.

PGconn *conn = PQconnectdb( "host=localhost user=postgres dbname=postgres password=123" );


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:

$ ls /etc/postgresql/9.1/main/pg_hba.conf -l

El permiso de este archivo se debe otorgar al usuario con el que haya registrado su psql.

Promover. Si eres bueno hasta ahora ..

Actualizar según las instrucciones de @ depa.

es decir

$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf

y luego hacer cambios.


el siguiente comando funciona para mí:

psql -d myDb -U username -W