Django的设置:psycopg2.OperationalError:FATAL:对等身份验证失败

2019-08-19 10:17发布

我在Django项目PostgreSQL的设置越来越问题。

这里是我的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"

请帮我出什么可能我做错了这里。

Answer 1:

我有类似的问题,并解决它这个答案通过添加localhost到数据库HOST settings.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':'localhost', # Set to empty string for localhost.
        'PORT':'', # Set to empty string for default.
        },
}


Answer 2:

默认情况下,在许多Linux发行版,客户端身份验证设置为“对等”的Unix套接字连接到数据库。 这是在设定pg_hba.conf PostgreSQL的配置文件。 该psycopg2 Python库文档状态:

- *主机*:数据库主机地址(默认为UNIX插座如果不提供)

所以,如果你离开主机选项空白,你的脚本将尝试连接并使用Unix的用户名:认证密码。 要解决,您可以:

  1. 明确设置的“主机”选项为127.0.0.1到您粘贴到你的问题的配置代码。
  2. 修改pg_hba.conf文件,以便它使用存储在postrgres DB用户存储用户名和密码来使用套接字连接的md5(不推荐,因为这可能会破坏系统的用户身份验证)


Answer 3:

您需要设置pg_hba.conf使用md5认证用户,db和源的兴趣IP。 见客户端身份验证文件的章节。

搜索pg_hba.conf堆栈溢出的万吨以上信息。



Answer 4:

我也被Django项目设置PostgreSQL数据库的过程中面临着类似的问题。

我的系统是运行RHEL 7 CentOS的PostgreSQL的版本10.我搜索了很多,但couldnot找到真正发生了什么,直到我看到日志在/var/lib/pqsql/10/data/log/postgresql*.log

二○一七年十一月一十日00:31:40.499 IST [14129] DETAIL:连接匹配的pg_hba.conf线85: “承载所有所有:: 1/128 IDENT”

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

主机上的所有一切:: 1/128 MD5

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

感谢所有谁帮我找到这个解决方案。 PostgreSQL的客户端验证尤其是@juliocesar和官方文件



文章来源: Django setting : psycopg2.OperationalError: FATAL: Peer authentication failed for user “indivo”