postgresql:致命:用户"douglas"的密码验证失败

Dou*_*lva 12 python django postgresql

首先:抱歉这个副本,但其他与此问题相关的类似问题总是告诉同样的方法来解决这个问题,但确实对我不起作用.我试图将数据库从sqlite迁移到postgresql ...所以我键入:

sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'newpassword';
Run Code Online (Sandbox Code Playgroud)

并且输出返回:" ALTER ROLE "

但是当我键入" python manage.py migrate "时,我总是收到同样的错误:

django.db.utils.OperationalError:致命:用户"douglas"的密码验证失败

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',
    }
}
Run Code Online (Sandbox Code Playgroud)

ps:当我运行' ALTER USER postgres WITH PASSWORD '时,我将相同的密码设置在settings.py中.

谢谢!

Sha*_*dow 11

您运行的SQL与您尝试使用的用户不匹配.

如果用户不存在,您将需要创建该用户

CREATE USER douglas WITH PASSWORD 'vamointer';
Run Code Online (Sandbox Code Playgroud)

或者如果确实存在,请改为更改用户密码.

ALTER USER douglas WITH PASSWORD 'vamointer';
Run Code Online (Sandbox Code Playgroud)

一旦你做完了,你应该有更多的运气.您可能还需要为该用户分配权限.


Har*_*lin 10

如果您像我一样头脑发热,并且在 settings.py 的 Django 数据库配置中使用了“USERNAME”而不是“USER”,请确保将其更改为“USER”,否则您将看到同样的错误。希望这可以帮助像我这样的人。

  • 这解决了我的问题,看来我们是一样的哈哈。 (3认同)

小智 8

postgresql 中的特殊字符在执行时会转换为不同的字符。确保您的密码中没有特殊字符(#、$ 等)。

如果这样做,请按如下方式更改 postgresql 密码:

sudo -u postgresql psql
postgresql=#ALTER USER yourusername WITH PASSWORD 
'set_new_password_without_special_character';
Run Code Online (Sandbox Code Playgroud)

确保不要忘记;postgresql 命令末尾的 。然后运行python manage.py,它应该可以工作!