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',
}}