Аутентификация не прошла, когда я использую postgresql с django
ОС: AWS linux django3.2.7 python 3.7 psql (PostgreSQL) 13.3
Я пытаюсь использовать postgresql с django. Я изменил set.py следующим образом:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'localhost',
'PORT': '5432',
}
}
Я создал пароль для postgre и успешно вошел в систему как этот пользователь.
$ 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=#
Однако, когда я попытался выполнить следующее:
$ python3 manage.py runserver
Я получил эту ошибку:
django.db.utils.OperationalError: FATAL: Ident authentication failed for user "postgres"
Я не уверен, в чем проблема, и хотел бы знать, как я могу это исправить.
Заранее спасибо!
Имя вашей базы данных - "postgres", вы можете увидеть в psql bash (postgres=#), но вы установили его как "dbname" в настройках
Вы настроены на использование аутентификации ident
, а не пароля. Установка пароля для пользователя не изменит этого - назначенный пароль просто останется неиспользованным. Если вы хотите использовать парольную аутентификацию, вам нужно изменить pg_hba.conf, чтобы указать ее, либо md5
, либо "scram-sha-256"
.
В качестве альтернативы вы можете научиться правильно использовать ident
, если это то, чего хочет от вас ваш фреймворк.
Я установил пароль для пользователя с помощью 'ALTER .... С ЗАШИФРОВАННЫМ ПАРОЛЕМ'? И тогда проблема была решена!