我正在学习在 Ubuntu 11.10 中一起使用 PostgreSQL
和 Django
,我发现我需要切换到我在安装 PostgreSQL 时创建的用户 ("postgres"
) 在终端中(通过 "sudo su postgres"
)创建并访问数据库以在 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
我正在尝试阅读 PostgreSQL 文档,让我的普通用户可以访问我为我的 Django 项目创建的数据库,但我无法理解,因为我不了解 PostgreSQL 之间的关系角色/用户和 Ubuntu 用户。有人可以向我解释一下如何让我的普通 Ubuntu 用户名访问我在 PostgreSQL 中的数据库吗?我可能需要一个特定的指令列表,因为我已经尝试使用 PostgreSQL 文档将其拼凑在一起,但我完全迷失了方向。
最佳答案
cfedermann 是正确的;这是问题的副本:
Django connection to PostgreSQL: "Peer authentication failed"
解决方法是一样的。在我的 Django 项目的“settings.py”文件中,在 DATABASES 部分下,我的“HOST”设置为空字符串,因为那里有一个内置注释(意思是 Django 开发人员编写的注释)字面意思说,“为本地主机设置为空字符串。”显然这不是真的,因为只有在我明确输入“localhost”后,我才能使用我的默认 Linux 用户名连接到我的 psql 数据库。
我想这里的教训是,对于所有尝试在开发中将它与 postgresql 一起使用的 Django 其他新手,请确保在“settings.py”文件中输入“LOCALHOST”,否则你不会能够连接到存储在您自己机器上的 psql 数据库!
再次感谢 cfedermann 指出我的答案。
关于django - 无法使用普通的 Ubuntu Linux 用户访问 Django 中的 PostgreSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186672/