【问题标题】:psycopg2.OperationalError: FATAL: password authentication failed for user "nouman"psycopg2.OperationalError:致命:用户“nouman”的密码验证失败
【发布时间】:2020-05-04 16:08:39
【问题描述】:

附:此问题已解决(我使用了错误的端口号)

我正在尝试在 WINDOWS 操作系统上使用 django 2.2 配置 Postgresql,但最终出现错误。这是我为我的项目配置 postgres 所做的:

  1. 使用所有默认配置安装了 postgresql 最新版本并提供了我的密码
  2. 在 SQL Shell (psql) 中创建数据库
  • 创建用户 nouman;

  • 创建数据库博客所有者 nouman;

  1. 然后我将数据库的 settings.py 文件更新为:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'blog',
        'USER': 'nouman',
        'PASSWORD': 'my password',
        'HOST': 'localhost',
        'PORT': '',
    }
}
  1. 我通过以下命令安装了 psycopg2:“pip install psycopg2”。
  2. 但是当我通过“python manage.py migrate”更新数据库时,它给出了这个错误:
Traceback (most recent call last):
  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\django\db\backends\postgresql\base.py", line 178, in get_new_connection
    connection = Database.connect(**conn_params)
  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\psycopg2\__init__.py", line 126, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL:  password authentication failed for user "nouman"


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()

-----------snip--------

  File "C:\Users\nouma\Desktop\djano2byexample\myenv\lib\site-packages\psycopg2\__init__.py", line 126, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL:  password authentication failed for user "nouman"

【问题讨论】:

    标签: django postgresql psycopg2


    【解决方案1】:

    您需要使用命令创建数据库用户

    CREATE ROLE username WITH LOGIN PASSWORD 'quoted password';
    CREATE DATABASE databasename;
    GRANT ALL PRIVILEGES ON DATABASE databasename TO username;
    

    阅读here

    【讨论】:

    • 我认为这适用于 Mac OS,但我使用的是 Windows。
    • 无论如何。您使用命令CREATE USER nouman; 创建了用户。所以它没有任何密码登录。尝试使用我的答案中的命令
    • 感谢您的帮助,但作为初学者,我犯了一个愚蠢的简单错误,现在解决了。
    • @NoumanMalik 您能说明您为解决问题所做的工作吗?什么是“愚蠢的错误”?谢谢!
    【解决方案2】:

    默认 PostgresSQL 安装始终包含 postgres 超级用户。最初,您必须以 postgres 用户身份连接到 PostgreSQL,直到您创建其他用户(也称为角色)。

    要创建 PostgreSQL 用户,请按以下步骤操作:

    1. 在命令行中,以服务器的根用户身份键入以下命令 用户: su - postgres

    2. 您现在可以作为 PostgreSQL 运行命令 超级用户。要创建用户,请键入以下命令: createuser --interactive --pwprompt

    3. 按照命令行上的说明进行操作。 PostgreSQL 使用您指定的设置创建用户。

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2014-04-23
      • 1970-01-01
      • 2018-08-06
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多