Django的设置:psycopg2.OperationalError:FATAL:用户“indivo”的对等身份validation失败

我在使用POSTGRESQL的Django项目设置中遇到问题。

这是我的setting.py数据库设置

DATABASES = { 'default':{ 'ENGINE':'django.db.backends.postgresql_psycopg2', # '.postgresql_psycopg2', '.mysql', or '.oracle' 'NAME':'indivo', # Required to be non-empty string 'USER':'indivo', # Required to be non-empty string 'PASSWORD':'ritvik', 'HOST':'', # Set to empty string for localhost. 'PORT':'', # Set to empty string for default. }, } 

现在在postgres后端我所做的是。

 rohit@rohit-desktop:~$ sudo su - postgres postgres@rohit-desktop:~$ createuser --superuser indivo # create a super user indivo postgres@rohit-desktop:~$ psql # open psql terminal psql (9.1.8) Type "help" for help. postgres=# \password indivo # set the password ritvik Enter new password: Enter it again: postgres=# \q #logout postgres@rohit-desktop:~$ createdb -U indivo -O indivo indivo #create db indivo 

不幸的是,当我试图syncdb我收到错误。

 psycopg2.OperationalError: FATAL: Peer authentication failed for user "indivo" 

请帮我看看我在这里做错了什么。

我有类似的问题,并通过将localhost添加到settings.py中的数据库HOST设置来解决此问题 ,所以您的数据库设置应如下所示:

 DATABASES = { 'default':{ 'ENGINE':'django.db.backends.postgresql_psycopg2', # '.postgresql_psycopg2', '.mysql', or '.oracle' 'NAME':'indivo', # Required to be non-empty string 'USER':'indivo', # Required to be non-empty string 'PASSWORD':'ritvik', 'HOST':'localhost', # Set to empty string for localhost. 'PORT':'', # Set to empty string for default. }, } 

默认情况下,在许多Linux发行版中,对于与数据库的Unix套接字连接,客户端身份validation设置为“peer”。 这在pg_hba.confconfiguration文件中设置。 psycopg2 python库文档指出:

– *主机*:数据库主机地址(如果未提供,则默认为UNIX套接字)

因此,如果将主机选项留空,脚本将尝试连接并使用Unix用户名:密码进行身份validation。 要解决,你可以:

  1. 将“主机”选项显式设置为127.0.0.1到您粘贴到您的问题的configuration代码。
  2. 修改pg_hba.conf文件以使用md5进行套接字连接,以便使用存储在postrgres数据库用户存储中的用户名和密码(不build议这样做,因为这可能会中断系统用户的身份validation)

您需要将pg_hba.conf设置为使用md5身份validation来获取感兴趣的用户,数据库和源IP。 请参阅文档的客户端身份validation一章。

在Stack Overflow上searchpg_hba.conf以获取更多信息。

在使用Django项目设置postgresql数据库时,我也遇到类似的问题。

我的系统运行RHEL CentOS 7和postgresql版本10.我search了很多,但实际上找不到发生了什么,直到我看到/var/lib/pqsql/10/data/log/postgresql*.log

2017-01-10 00:31:40.499 IST [14129]细节:连接匹配的pg_hba.conf第85行:“host all all :: 1/128 ident”

所以我只是改变文件/var/lib/pgsql/10/data/pg_hba.conf中的特定行:从主机all all :: 1/128 ident

主机全部:: 1/128 md5

与此我能够创build数据库和表使用manage.py迁移

感谢所有帮助我find解决scheme的人。 特别是@ juliocesar和postgresql客户端身份validation的官方文档