【问题标题】:OperationalError: FATAL: password authentication failed for user "UserName"OperationalError:致命:用户“用户名”的密码验证失败
【发布时间】:2014-04-23 04:31:18
【问题描述】:

从 GitHub 下载项目后,尝试在本地运行它。我使用命令创建了一个数据库(我使用的是 Postgres 9.1):

postgres = # CREATE NameUser django createDB WITH PASSWORD 'MyPass';
CREATE ROLE
postgres = # CREATE DATABASE DatabaseName OWNER NameUser;
CREATE DATABASE

然后在设置文件中我有这个代码:

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2'
         'NAME': 'DatabaseName',
         'USER': 'NameUser'
         'PASSWORD': 'MyPass'
         'HOST': 'localhost',
         'PORT':'',
     }
}

命令后:./manage.py resetdb,接收:

OperationalError: FATAL: password authentication failed for user "NameUser"
FATAL: password authentication failed for user "NameUser"

我在 stackoverflow 上发现原因可能是相应的文件 pg_hba.conf。修改后的样子是这样的:

# Database administrative login by Unix domain socket
local   all             postgres                                md5
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

请帮忙。

【问题讨论】:

  • 在 Postgres 中,角色名称是区分大小写的,但是当不加引号时,它们会被大小写折叠成小写。所以你实际上已经创建了一个名为“nameuser”的角色。 (还有一个名为“databasename”的数据库。)
  • @MilenA.Radev 谢谢。它有效。

标签: database django postgresql authentication passwords


【解决方案1】:

尝试:

CREATE "NameUser" django createDB WITH PASSWORD 'MyPass';

注意"NameUser" 周围的双引号。这是因为 PostgreSQL 中的 SQL 标准标识符大小写折叠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2012-07-05
    • 2021-08-04
    • 2017-02-06
    • 2013-11-15
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多