Postgresql: FATAL: аутентификация пароля для пользователя "douglas"

Я пытаюсь перенести БД из sqlite в postgresql... поэтому я набрал:

sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'newpassword';

и вывод возвращает ALTER ROLE

но когда я печатаю python manage.py migrate, я всегда получаю одну и ту же ошибку:

django.db.utils.OperationalError: FATAL: аутентификация по паролю не удалось для пользователя "Дуглас"

Это разделы базы данных моего settings.py.

# Old, using mysqlite
"""
DATABASES = {
    #'default': {
    #    'ENGINE': 'django.db.backends.sqlite3',
    #    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #}
    'default': dj_database_url.config(default='postgres://localhost:5432/postgres_db_name'),
}
"""

# New, using postgres
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'douglas_db',
        'USER': 'douglas',
        'PASSWORD': 'vamointer',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

Примечание. Когда я запускаю "ALTER USER postgres WITH PASSWORD", я вводю тот же пароль, который указан в settings.py.

Ответ 1

Используемый вами SQL не соответствует пользователю, которого вы пытаетесь использовать.

Вам нужно создать пользователя, если он не существует:

CREATE USER douglas WITH PASSWORD 'vamointer';

или, если он существует, измените этот пароль пользователя.

ALTER USER douglas WITH PASSWORD 'vamointer';

Как только вы это сделаете, вам повезет больше. Возможно, вам также потребуется назначить разрешения этому пользователю.

Ответ 2

Специальные символы в postgresql преобразуются в различные символы во время выполнения. Убедитесь, что в вашем пароле нет специальных символов (#, $ и т.д.).

Если вы это сделаете, измените пароль postgresql следующим образом:

sudo -u postgresql psql
postgresql=#ALTER USER yourusername WITH PASSWORD 
'set_new_password_without_special_character';

Убедитесь, что вы не забыли ; в конце команды postgresql. Затем запустите python manage.py, и оно должно работать!

Ответ 3

Если вы такой же тупой, как я, и использовали "USERNAME" вместо "USER" в своих конфигурациях базы данных Django в settings.py, убедитесь, что вы изменили его на "USER", иначе вы увидите ту же ошибку. Надеюсь, это поможет кому-то вроде меня в будущем.

Ответ 4

Вы можете попробовать это:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'telusko',
    'USER': 'postgres', #in place we should always be write USER only if we write USENAME then it will give error.
    'PASSWORD': '1234',
    'HOST':'localhost',
}}