psql: FATAL: Falló la autenticación Ident para el usuario " postgres"


He instalado PostgreSQL y pgAdminIII en mi Ubuntu Karmic box.

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

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

¿Alguien ahora cómo resolver este problema?

 336
Author: Peter DeWeese, 2010-05-31

21 answers

Ha establecido la configuración adecuada en pg_hba.conf?

Véase https://help.ubuntu.com/stable/serverguide/postgresql.html cómo hacerlo.

 172
Author: Frank Heikens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-08 06:32:56

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

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

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

Cierra la sesión de psql escribiendo \q o ctrl+d. Luego nos conectamos como 'postgres'. La parte -h localhost es importante : le dice al cliente psql que queremos conectarnos usando una conexión TCP (que está configurada para usar contraseña autenticación), y no por una conexión de PARES (que no se preocupa por la contraseña).

$ psql -U postgres -h localhost
 389
Author: Manav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-21 00:48:09

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

/etc/init.d/postgresql reload
 151
Author: Danny Milosavljevic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-18 21:44:03

Está recibiendo este error porque está fallando la autenticación del cliente. Basado en 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 PostgreSQL.

Definitivamente debes leer la sección 19.1 Autenticación de Cliente en el manual de PostgreSQLpara comprender mejor la configuración de autenticación disponible (para cada registro en pg_hba.conf ), pero aquí está la fragmento relevante para ayudar con el problema que está teniendo (del manual de la versión 9.5 de ):

Trust

Permitir la conexión incondicionalmente. Este método permite que cualquier persona que puede conectarse al servidor de base de datos PostgreSQL para iniciar sesión como cualquier PostgreSQL que deseen, sin la necesidad de una contraseña o cualquier otra autenticación. Véase la sección 19.3.1 para más detalles.

Rechazar

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

Md5

Requiere que el cliente proporcione una contraseña doble-MD5-hash para autenticación. Véase la sección 19.3.2 para más detalles.

Contraseña

Requiere que el cliente proporcione una contraseña no cifrada para autenticación. Dado que la contraseña se envía en texto claro sobre el red, esto no debe usarse en redes no confiables. Ver Sección 19.3.2 para más detalles.

Ssg

Utilice GSSAPI para autenticar al usuario. Esto solo está disponible para TCP / IP relación. Véase la sección 19.3.3 para más detalles.

Sspi

Utilice SSPI para autenticar al usuario. Esto solo está disponible en Windows. Véase la sección 19.3.4 para más detalles.

Ident

Obtenga el nombre de usuario del sistema operativo del cliente ident server en el cliente y comprobar si coincide con el solicitado nombre de usuario de la base de datos. La autenticación Ident solo se puede usar en TCP / IP relación. Cuando se especifica para conexiones locales, la autenticación de pares se utilizará en su lugar. Véase la sección 19.3.5 para más detalles.

Peer

Obtener el nombre de usuario del sistema operativo del cliente desde el sistema y compruebe si coincide con el nombre de usuario de la base de datos solicitada. Este solo está disponible para conexiones locales. Véase la sección 19.3.6 para detalles.

Ldap

Autenticar usando un servidor LDAP. Véase la sección 19.3.7 para más detalles.

Radio

Autentique usando un servidor RADIUS. Véase la sección 19.3.8 para más detalles.

Cert

Autenticar usando certificados de cliente SSL. Véase la sección 19.3.9 para detalles.

Pam

Autenticarse mediante el servicio Módulos de Autenticación conectables (PAM) proporcionado por el sistema operativo. Véase la sección 19.3.10 para más detalles.

So ... para resolver el problema que estás experimentando, puedes hacer una de las siguientes cosas:

  1. Cambiar los métodos de autenticación definidos en su pg_hba.conf archivo trust, md5, o password (dependiendo de su seguridad y necesidades de simplicidad) para los registros de conexión local tener definido ahí.

  2. Actualizar pg_ident.conf para asignar los usuarios de su sistema operativo a Usuarios de PostgreSQL y otorgarles los privilegios de acceso correspondientes, dependiendo de 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 desea conceder acceso. Si a el usuario ya está autenticado por el sistema operativo y conectado, PostgreSQL no requerirá más autenticación y otorgará acceso a eso usuario basado en los privilegios (roles) que se le asignen en el base. Esta es la configuración predeterminada.

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

 70
Author: Haig Bedrosian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-22 17:24:51

Simplemente agregar el bit -h localhost era todo mío requerido para trabajar

 42
Author: boulder_ruby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-10 18:51:42

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:
 14
Author: Ivan Trechyokas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-13 09:25:32

En caso de que nada de lo anterior funcione para usted:

He hecho un buen número de instalaciones Postgres, pero fue flummoxed hoy en un sistema RedHat 6.5 (instalación de Postgres 9.3). Mi típico hba.la configuración de 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.

 11
Author: Ethan Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-21 03:38:58

Encontré 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 ident funcionó.

 10
Author: Dustin Kirkland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-06 16:54:28

El problema sigue siendo tu pg_hba.archivo 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 descripciones breves 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 por pares funciona obteniendo el nombre de usuario del sistema operativo del cliente del kernel y usándolo como el nombre de usuario permitido de la base de datos (con asignación opcional de nombres de usuario). Este método es solo compatible con conexiones locales.

Autenticación con contraseña

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

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

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

 7
Author: Suneel Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-18 11:53:07

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';"

Usé la siguiente configuración:

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

Finalmente, la conexión se realiza correctamente para el siguiente comando:

psql -U produser -d dbname -h localhost -W 
 7
Author: Joseph Persie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-03 22:07:29

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 de confianza 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
 6
Author: Aaron Lelevier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-16 13:48:58

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. Véase más adelante.]

De 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 uno de los métodos de autenticación de contraseña para el usuario postgres.

Puedes probar esto ejecutando:

sudo -u postgres psql

Si lo anterior funciona, su servidor probablemente esté configurado para usar peerautenticación para conexiones locales por el usuario postgres, es decir, pidiendo al sistema operativo su nombre de usuario para confirmar que usted es postgres.

Así Que Probablemente Sea Tu pg_hba.conf File

La ruta completa del archivo será algo como /etc / postgresql / 9.3 / main / pg_hba.conf . Puede verlo por, por ejemplo, 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 agregue la siguiente entrada a su pg_hba.conf archivo:

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

[líneas Comentadas en el pg_hba.conf el archivo comienza 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

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

Más sobre pg_hba.conf

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

El primer registro con un tipo de conexión coincidente, dirección del cliente, la base de datos solicitada , y nombre de usuario se utiliza para realizar la autenticación. No hay" fall-through "o" backup": si se elige un registro y la autenticación falla, los registros posteriores no se consideran. Si no hay coincidencias de registro, acceso se niega.

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

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

Entonces no será capaz de conectarse a través de:

psql -u postgres

A menos que una de estas entradas esté en su pg_hba.conf file above the former entry:

# 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!
 6
Author: Kenny Evitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-11 04:11:28

Si has hecho todo esto y sigue sin funcionar, comprueba la caducidad de ese usuario:

La autenticación con contraseña de Postgres falla

 4
Author: Brenda J. Butler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:01

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

El orden de configuración de 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 vanilla. Estos valores predeterminados pueden coincidir con las condiciones de sus intentos de autenticación, lo que resulta en un error de autenticación. Falla independientemente de la configuración adicional agregada al final de la .archivo conf.

Para comprobar qué línea de configuración se utiliza asegúrese de mirar el archivo de registro predeterminado para los mensajes. Es posible que vea 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 predeterminada está causando el rechazo.

host    all             all             127.0.0.1/32            ident

Intenta comentarlo.

 4
Author: Jeremy Whiting,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-18 15:50:02

Un truco alrededor de esto es editar pg_hba.conf

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

Temporalmente

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

En este punto has terminado. Por seguridad, luego ir y

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

Luego regresa y establece pg_hba.conf volver a

# Database administrative login by Unix domain socket
local   all             postgres                                   md5
 3
Author: ntg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-16 16:37:09

Tuve un problema similar y lo arreglé en pg_hba.conf al eliminar todos los métodos ident 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
 1
Author: TMa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 15:56:10

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

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

Saludos

 1
Author: VanThaoNguyen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-09 18:16:18

Para fedora26 y postgres9.6

Primero, iniciar sesión como usuario root
luego ingrese a psql mediante los siguientes comandos
$su postgres
a continuación, escriba ps psql

En psql buscar 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 esto

Host all all 127.0.0.1 / 32 md5

 1
Author: mohsen.noor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 10:05:41

Tuve el mismo issuse después de seguir esto: PostgreSQL setup for Rails development in Ubuntu 12.04

Probé las otras respuestas pero todo lo que tenía que hacer era: "config/database.yml "

development:
  adapter: postgresql
  encoding: unicode
  database: (appname)_development
  pool: 5
  username: (username you granted appname database priviledges to)
  password:
 0
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-13 06:02:44

Si lo está usando en CentOS, es posible que necesite recargar postgres después de hacer las soluciones anteriores:

systemctl restart postgresql-9.3.service
 0
Author: Jaswinder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-21 02:38:12

Esto funcionó para mí : http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#

local   all             postgres                                trust
local   all             myapp_usr                               trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
#host    all             all             ::1/128                 trust
 -2
Author: Ing. M.D'Ambrosio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 10:23:27