繁体   English   中英

Django设置:psycopg2.OperationalError:致命:用户“indivo”的对等身份验证失败

[英]Django setting : psycopg2.OperationalError: FATAL: Peer authentication failed for user “indivo”

我在使用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', # <- Changed from empty string to localhost
        'PORT':'', # Set to empty string for default.
        },
}

默认情况下,在许多Linux发行版中,客户端身份验证设置为“对等”,用于与数据库的Unix套接字连接。 这是在pg_hba.conf配置文件中设置的。 psycopg2 python库文档说明:

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

因此,如果将主机选项留空,则脚本将尝试连接并使用Unix用户名:密码进行身份验证。 要修复,您可以:

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

您需要设置pg_hba.conf以对用户,数据库和感兴趣的源IP使用md5身份验证。 请参阅文档的客户端身份验证章节。

在Stack Overflow上搜索pg_hba.conf以获取更多信息。

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

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

2017-11-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 :: 1/128 ident

主持人全部:: 1/128 md5

我可以使用manage.py migrate创建数据库和表

感谢所有帮助我找到这个解决方案的人。 特别是@juliocesar和postgresql客户端身份验证的官方文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM