My environment
OS: AWS linux
python 3.7
psql (PostgreSQL) 13.3
$ pip freeze asgiref==3.4.1 aws-cfn-bootstrap==2.0 Django==3.2.7 docutils==0.14 lockfile==0.11.0 psycopg2-binary==2.9.1 pystache==0.5.4 python-daemon==2.2.3 pytz==2021.1 simplejson==3.2.0 sqlparse==0.4.2 typing-extensions==3.10.0.2
I am trying to use PostgreSQL with Django.
I changed setting.py like below:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'dbname', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'localhost', 'PORT': '5432', } }
I created a password for PostgreSQL and I successfully logged in as this user.
$ sudo su - postgres Last failed login: Sun Sep 26 18:21:57 JST 2021 on pts/4 There were 6 failed login attempts since the last successful login. -bash-4.2$ psql Password for user postgres: psql (13.3) Type "help" for help. postgres=# postgres=# l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- dbname | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | username=CTc/postgres postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres
However, when I tried to execute this:
$ python3 manage.py runserver
I got this error:
django.db.utils.OperationalError: FATAL: Ident authentication failed for user "postgres"
pg_hba.conf looked like this first:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident
I changed like this:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # 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 ident host replication all ::1/128 ident
However, either way does not work and still same error.
I am not sure what the problem is and would like to know how I can fix this.
Advertisement
Answer
I set the password for the user by ‘ALTER …. WITH ENCRYPTED PASSWORD’ ? And then the problem was solved!