Postgres error message: FATAL: Ident authentication failed for user "..."

Solution 1:

It means that Postgres is trying to authenticate a user using the Ident protocol, and can't. Ident auth works like this:

  • You have database role 'foo' on database 'db'
  • Your pg_hba.conf file (in /etc/postgres-something/main) defines 'Ident' as the protocol to connect to database db for users connecting from certain hosts
  • The unix username making the connection is 'foo'
  • An Ident server running on the machine the user is connecting from confirms that their username really is 'foo'

Possible causes and solutions:

  1. There is no Ident server running on the machine you're trying to connect from. Test this by trying to connect to it on port 113. If that fails, install an Ident server (eg, sudo apt-get install oidentd).
  2. There's an Ident server, but there's no database role matching the name you're trying to connect with ('foo' in the above example). So create it by connecting somehow to the database with superuser rights and do CREATE ROLE foo. Alternatively add an entry to /etc/postgresql/.../main/pg_ident.conf (or /var/lib/pgsql/12/data or wherever).

  3. Maybe the shell username doesn't match the database role. You may be able to test this by connecting to the Ident server while a connection is going on, and passing the right port numbers.

  4. Maybe you actually want to connect with a password, not Ident. Edit the pg_hba.conf file appropriately. For example, change:

    host all all ident


    host all all md5

Solution 2:

Not sure about the causes, but this fixed it for me:

in pg_hba.conf

change to this:

host all all md5

Exact error: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

Solution 3:

On CentOS, add the following line to /var/lib/pgsql/9.3/data/pg_hba.conf:

host all all trust

And comment out the other entries.

Of course, this setting is not secure, but if you're just messing about on a development VM like me then it's probably fine...