tutorial sirve que para instalar como postgresql

postgresql - sirve - psql: FATAL: Falló la autenticación de identificación para el usuario "postgres"



postgresql version (21)

Hmmm ...

Si puede conectarse con el nombre de usuario y la contraseña en pgAdminIII pero no puede conectarse con psql entonces esos dos programas probablemente se conecten a la base de datos de manera diferente.

[Si se está conectando a diferentes bases de datos, primero intente conectarse a la misma base de datos. Vea abajo.]

Desde PostgreSQL: Documentación: 9.3: psql :

Si omite el nombre de host, psql se conectará a través de un socket de dominio Unix a un servidor en el host local, o a través de TCP / IP a localhost en máquinas que no tienen sockets de dominio Unix.

Si no está ejecutando algo como psql ... -h host_name ... , y está ejecutando Ubuntu, psql debería conectarse a través de un socket de dominio Unix, por lo que PostgreSQL probablemente no esté configurado para permitir una de las contraseñas Métodos de autenticación para el usuario postgres .

Puedes probar esto ejecutando:

sudo -u postgres psql

Si lo anterior funciona, su servidor probablemente esté configurado para usar la autenticación de pares para las conexiones locales por parte del usuario de postgres , es decir, pedirle al sistema operativo su nombre de usuario para confirmar que está postgres .

Así que es probablemente tu archivo pg_hba.conf

La ruta completa del archivo será algo así como /etc/postgresql/9.3/main/pg_hba.conf . Puede verlo, por ejemplo, sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more

Si está omitiendo el nombre de host en su comando psql , debería poder conectarse si agrega la siguiente entrada a su archivo pg_hba.conf :

# Connection type Database User IP addresses Method local all postgres md5

[Las líneas comentadas en el archivo pg_hba.conf comienzan con # .]

Si está incluyendo el nombre de host en su comando psql , agregue esta entrada en su lugar:

# Connection type Database User IP addresses Method host all postgres 127.0.0.1/32 md5

psql colocar la entrada antes de que otras entradas psql para su conexión a través de psql . Si tiene dudas sobre dónde colocarlo, simplemente póngalo antes de la primera línea sin comentarios.

Más sobre pg_hba.conf

De PostgreSQL: Documentación: 9.3: El archivo pg_hba.conf [negrita énfasis mío]:

El primer registro con un tipo de conexión , dirección de cliente , base de datos solicitada y nombre de usuario coincidentes se utiliza para realizar la autenticación. No hay "caída directa" o "copia de seguridad": si se elige un registro y la autenticación falla, los registros posteriores no se consideran. Si no coincide el registro, se deniega el acceso.

Tenga en cuenta que los registros no coinciden con el método de autenticación. Por lo tanto, si su archivo pg_hba.conf contiene la siguiente entrada:

# Connection type Database User IP addresses Method local all postgres peer

Entonces no podrás conectarte a través de:

psql -u postgres

A menos que una de estas entradas esté en su archivo pg_hba.conf sobre la entrada anterior:

# Connection type Database User IP addresses Method local all postgres md5 local all postgres password # Unencrypted! local all all md5 local all all password # Unencrypted!

He instalado PostgreSQL y pgAdminIII en mi caja de Karmic de Ubuntu.

Puedo usar pgAdminIII correctamente (es decir, conectar / iniciar sesión), sin embargo, cuando intento iniciar sesión en el servidor con el mismo nombre de usuario / pwd en la línea de comandos (con psql), aparece el error

psql: FATAL: Ident authentication failed for user "postgres"

¿Alguien ahora cómo resolver este problema?



De todas las respuestas anteriores nada funcionó para mí. Tuve que cambiar manualmente la contraseña de los usuarios en la base de datos y de repente funcionó.

psql -U postgres -d postgres -c "alter user produser with password ''produser'';"

Utilicé los siguientes ajustes:

pg_hba.conf

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

La conexión es exitosa finalmente para el siguiente comando:

psql -U produser -d dbname -h localhost -W


Descubrí que tenía que instalar un servidor de identidad, que escucha en el puerto 113.

sudo apt-get install pidentd sudo service postgresql restart

Y luego trabajó la identidad.


Edite el archivo /etc/postgresql/8.4/main/pg_hba.conf y reemplace ident o peer por md5 o trust , dependiendo de si desea solicitar una contraseña en su propia computadora o no. Luego vuelve a cargar el archivo de configuración con:

/etc/init.d/postgresql reload


El problema sigue siendo su archivo pg_hba.conf. Esta línea: puede encontrar este archivo en / etc / postgres / varion / main

local all postgres peer Should be local all postgres md5

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

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


En caso de que ninguno de los anteriores te funcione:

He realizado bastantes instalaciones de Postgres, pero hoy quedé desconcertado en un sistema RedHat 6.5 (instalación de Postgres 9.3). Mi configuración típica de hba.conf que Aron muestra arriba no funcionó. Resultó que mi sistema estaba usando IPV6 e ignorando la configuración de IPV4. Añadiendo la línea:

host all all ::1/128 password

me permitió iniciar sesión con éxito.


En mi caso, la solución aquí: (para las personas interesadas) inicie sesión en postgres:

sudo -i -u postgres psql ALTER USER postgres WITH PASSWORD ''postgres''; # type your password here

Saludos



He pasado más tiempo resolviendo este error que quiero admitir.

El orden de configuración de la autenticación en pg_hba.conf es relevante en su caso, creo. El archivo de configuración predeterminado incluye varias líneas en una instalación de vainilla. Estos valores predeterminados pueden coincidir con las condiciones de sus intentos de autenticación, lo que resulta en una falla de autenticación. Falla independientemente de la configuración adicional agregada al final del archivo .conf.

Para verificar qué línea de configuración se usa, asegúrese de revisar el archivo de registro predeterminado para los mensajes. Podrías ver algo como esto

LOG: could not connect to Ident server at address "127.0.0.1", port 113: Connection refused FATAL: Ident authentication failed for user "acme" DETAIL: Connection matched pg_hba.conf line 82: "host all all 127.0.0.1/32 ident"

Resulta que esta línea por defecto está causando el rechazo.

host all all 127.0.0.1/32 ident

Intenta comentarlo.


Los siguientes pasos funcionan para una instalación nueva de postgres 9.1 en Ubuntu 12.04. (También funcionó para postgres 9.3.9 en Ubuntu 14.04).

Por defecto, postgres crea un usuario llamado ''postgres''. Nos conectamos como ella, y le damos una contraseña.

$ sudo -u postgres psql /password Enter password: ... ...

Cierre la sesión de psql escribiendo /q o ctrl+d . Entonces nos conectamos como ''postgres''. La parte -h localhost es importante : le dice al cliente psql que deseamos conectarnos utilizando una conexión TCP (que está configurada para usar la autenticación de contraseña), y no una conexión PEER (que no le importa la contraseña).

$ psql -U postgres -h localhost


Mi solución en PostgreSQL 9.3 en Mac OSX en bash shell fue usar sudo para ir a la carpeta de datos, y luego agregar las líneas necesarias al archivo pg_hba.conf para permitir que todos los usuarios sean confiables y puedan iniciar sesión. Esto es lo que hice

# in bash_profile edit PGDATA environmental variable open ~/.bash_profile # append this line to bash_profile export PGDATA="/Library/PostgreSQL/9.3/data" # reload bash_profile source ~/.bash_profile # open pg_hba.conf in vim sudo vi /Library/PostgreSQL/9.3/data/pg_hba.conf # append these two lines to the end of the pg_hba.conf file local all all trust host all all 127.0.0.1/32 trust # can now login as user in bash psql -d <db_name> -U <user_name> -W


Para fedora26 y postgres9.6.

Primero, inicia sesión como usuario root
Luego ingrese a psql por los siguientes comandos
$ su postgres
entonces escribe $ psql

en psql encuentra la ubicación de hba_file ==> significa pg_hba.conf

postgres = # show hba_file;

hba_file

/etc/postgresql/9.6/main/pg_hba.conf
(1 fila)

en el archivo pg_hba.conf cambiar el acceso del usuario a este

Alojar todo 127.0.0.1/32 md5


Puede establecer la variable de entorno PGHOST=localhost :

$ psql -U db_user db_name psql: FATAL: Peer authentication failed for user "db_user" $ export PGHOST=localhost $ psql -U db_user db_name Password for user mfonline:


Recibirá este error porque está fallando la autenticación del cliente. Según el mensaje de error, probablemente tenga la configuración predeterminada de Postgres, que establece el método de autenticación del cliente en "IDENT" para todas las conexiones de PostgreSQL.

Definitivamente debería leer la sección 19.1 Autenticación del cliente en el manual de PostgreSQL para comprender mejor la configuración de autenticación disponible (para cada registro en pg_hba.conf ), pero aquí está el fragmento relevante para ayudarlo con el problema que tiene (del manual de la versión 9.5). ):

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. Vea la Sección 19.3.1 para más detalles.

rechazar

Rechaza la conexión incondicionalmente. Esto es útil para "filtrar" ciertos hosts de un grupo, por ejemplo, una línea de rechazo podría bloquear la conexión de un host específico, mientras que una línea posterior permite que los hosts restantes en una red específica se conecten.

md5

Exigir al cliente que proporcione una contraseña doble hash MD5 para la autenticación. Vea la Sección 19.3.2 para más detalles.

contraseña

Exigir al cliente que proporcione una contraseña sin cifrar para la autenticación. Dado que la contraseña se envía en texto sin cifrar a través de la red, no debe usarse en redes que no sean de confianza. Vea la Sección 19.3.2 para más detalles.

gss

Utilice GSSAPI para autenticar al usuario. Esto solo está disponible para conexiones TCP / IP. Vea la Sección 19.3.3 para más detalles.

sspi

Utilice SSPI para autenticar al usuario. Esto solo está disponible en Windows. Vea la Sección 19.3.4 para más detalles.

ident

Obtenga el nombre de usuario del sistema operativo del cliente poniéndose en contacto con el servidor de identificación en el cliente y verifique si coincide con el nombre de usuario de la base de datos solicitada. La autenticación de identidad solo se puede utilizar en conexiones TCP / IP. Cuando se especifique para las conexiones locales, se utilizará la autenticación de pares en su lugar. Vea la Sección 19.3.5 para más detalles.

mirar

Obtenga el nombre de usuario del sistema operativo del cliente del sistema operativo y verifique si coincide con el nombre de usuario de la base de datos solicitado. Esto solo está disponible para conexiones locales. Vea la Sección 19.3.6 para más detalles.

ldap

Autenticar utilizando un servidor LDAP. Vea la Sección 19.3.7 para más detalles.

radio

Autenticar utilizando un servidor RADIUS. Vea la Sección 19.3.8 para más detalles.

cert

Autenticar utilizando certificados de cliente SSL. Vea la Sección 19.3.9 para más detalles.

pam

Autentíquese utilizando el servicio de módulos de autenticación conectables (PAM) proporcionado por el sistema operativo. Vea la Sección 19.3.10 para más detalles.

Entonces ... para resolver el problema que está experimentando, podría hacer una de las siguientes acciones:

  1. Cambie los métodos de autenticación definidos en su archivo pg_hba.conf a trust , md5 o password (según sus necesidades de seguridad y simplicidad) para los registros de conexión local que haya definido allí.

  2. Actualice pg_ident.conf para asignar los usuarios de su sistema operativo a los usuarios de PostgreSQL y otorgarles los privilegios de acceso correspondientes, según sus necesidades.

  3. Deje la configuración de IDENT sola y cree usuarios en su base de datos para cada usuario del sistema operativo al que desee otorgar acceso. Si un usuario ya está autenticado por el sistema operativo e iniciado sesión, PostgreSQL no requerirá una autenticación adicional y otorgará acceso a ese usuario en función de los privilegios (roles) que se le asignen en la base de datos. Esta es la configuración por defecto.

Nota: la ubicación de pg_hba.conf y pg_ident.conf depende del sistema operativo.



Si lo está utilizando en CentOS, es posible que deba volver a cargar Postgres después de realizar las soluciones anteriores:

systemctl restart postgresql-9.3.service


Simplemente agregando el bit -h localhost fue todo mío necesario para trabajar


Tuve el mismo problema después de seguir esto: Configuración de PostgreSQL para el desarrollo de Rails en Ubuntu 12.04

Probé las otras respuestas pero todo lo que tuve que hacer fue en: "config / database.yml"

development: adapter: postgresql encoding: unicode database: (appname)_development pool: 5 username: (username you granted appname database priviledges to) password:


Tuve un problema similar y lo arreglé en pg_hba.conf al eliminar todos los métodos de identificación , incluso para la dirección IP6 (a pesar de que solo tengo IP4 en la máquina).

host all all 127.0.0.1/32 password host all all ::1/128 password #for pgAdmin running at local network host all all 192.168.0.0/24 md5


Un truco alrededor de esto es editar pg_hba.conf

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

A temporalmente

# Database administrative login by Unix domain socket local all postgres trust

En este punto ya está hecho. Por seguridad, luego ve y

sudo -u postgres psql template1 ALTER USER postgres with encrypted password ''your_password'';

luego vuelve y configura pg_hba.conf de nuevo en

# Database administrative login by Unix domain socket local all postgres md5