I'm using PSQL version 12.5 on Ubuntu 20.04.1. My pg_hba.conf file looks like this:

# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# PAM Authentication
host    all             all                  pam
# IPv4 local connections:
host    all             all               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all               md5
host    replication     all             ::1/128                 md5

I create a USER\Role with:


Where test is a Linux user and is working fine. But when I run:

psql -U test 

I get the error:

postgres@ubuntu2004:~$ psql -U test
psql: error: FATAL:  Peer authentication failed for user "test"

Am I missing something?

1 Answer 1


Since you didn't specify the -h option, PostgreSQL connects via local Unix socket. This is governed by the local entry in pg_hba.conf. Hence you are authenticated with "peer" authentication. But since you are not operating system user test, peer authentication fails.

To get PAM authentication, connect with -h


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.