使用普通的Ubuntu Linux用户无法访问Django中的PostgreSQL数据库

GCh*_*orn 1 django postgresql ubuntu

我正在Ubuntu 11.10中学习用户PostgreSQLDjango一起,我发现我需要切换到我"postgres"在终端(通过"sudo su postgres")中安装PostgreSQL()时创建的用户,以便创建然后访问数据库以便在Django中工作.不幸的是,"postgres"用户在我的本地文件系统上没有文件写入权限,因此当我尝试执行某些操作(例如将模型对象添加到具有图像字段的数据库)时,我被阻止了.但是,如果我在终端中切换到我的普通Ubuntu用户名并尝试访问Django的开发服务器上的管理站点,我会收到如下错误:

OperationalError at /admin/

FATAL:  Peer authentication failed for user "postgres"

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version:     1.3.1
Exception Type:     OperationalError
Exception Value:    

FATAL:  Peer authentication failed for user "postgres"

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py in _cursor, line 140
Python Executable:  /usr/bin/python
Python Version:     2.7.2
Run Code Online (Sandbox Code Playgroud)

我正在尝试阅读PostgreSQL文档,让我的普通用户访问我为Django项目创建的数据库,但我无法理解,因为我不理解PostgreSQL角色/用户之间的关系和Ubuntu用户.有人可以向我解释如何在PostgreSQL中为我的数据库提供正常的Ubuntu用户名访问权限吗?我可能需要一个特定的指令列表,因为我试图使用PostgreSQL文档将它拼凑在一起,我完全迷失了.

GCh*_*orn 9

cfedermann是对的; 这是以下问题的副本:

Django与PostgreSQL的连接:"对等身份验证失败"

而解决方案是一样的.在我的Django项目的'settings.py'文件中,在DATABASES部分下,我的'HOST'被设置为一个空字符串,因为那里有一个内置注释(意思是,由Django开发人员编写的注释),字面意思说,'设置为为localhost清空字符串.' 显然这不是真的,因为只有在我明确输入'localhost'后才能在我的默认Linux用户名下连接到我的psql数据库.

我想这里的教训是,对于所有Django其他新手试图在开发中使用postgresql,确保你在'settings.py'文件中输入'LOCALHOST',否则你将无法连接到你自己的机器上存储的psql数据库!

再次感谢cfedermann指出我的答案.

  • 如果这是真的,那么教训就是提交针对Django的错误. (3认同)