I'm using PSQL version 12.5 on Ubuntu 20.04.1. My pg_hba.conf
file looks like this:
# DO NOT DISABLE!
# 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 0.0.0.0/0 pam
# IPv4 local connections:
host all all 127.0.0.1/32 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 127.0.0.1/32 md5
host replication all ::1/128 md5
I create a USER\Role with:
CREATE USER test WITH LOGIN;
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 127.0.0.1
.
-
Thanks it worked. Just one another question: dba.stackexchange.com/questions/284510/…Janshair Khan– Janshair Khan2021年02月02日 11:22:14 +00:00Commented Feb 2, 2021 at 11:22