Apache 上的 Postgres 身份验证问题

Apache 上的 Postgres 身份验证问题

我在 RHEL 5.4 上,并且我已经设置了一个Django项目使用 PostgreSQL 作为数据库(我以前使用过 MySQL,但想尝试一些新的东西 :) )。当我运行 Django 测试服务器时,一切正常,我也可以通过命令行进行密码验证连接:

psql -U myuser -h 127.0.0.1

但是当我尝试通过 Apache 访问我的项目时,我收到 500 错误代码,并且在 apache 的错误日志中出现此 python 回溯:

mod_wsgi (pid=7026): Exception occurred processing WSGI script '/var/www/myproject/myproject/hook.wsgi'.
Traceback (most recent call last):
  File "/var/www/myproject/myproject/src/django/django/core/handlers/wsgi.py", line 245, in __call__
    response = middleware_method(request, response)
  File "/var/www/myproject/myproject/src/django/django/contrib/sessions/middleware.py", line 36, in process_response
    request.session.save()
  File "/var/www/myproject/myproject/src/django/django/contrib/sessions/backends/db.py", line 55, in save
    obj = Session(
  File "/var/www/myproject/myproject/src/django/django/contrib/sessions/backends/base.py", line 152, in _get_session_key
    self._session_key = self._get_new_session_key()
  File "/var/www/myproject/myproject/src/django/django/contrib/sessions/backends/base.py", line 144, in _get_new_session_key
    if not self.exists(session_key):
  File "/var/www/myproject/myproject/src/django/django/contrib/sessions/backends/db.py", line 29, in exists
    Session.objects.get(session_key=session_key)
  File "/var/www/myproject/myproject/src/django/django/db/models/manager.py", line 132, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/var/www/myproject/myproject/src/django/django/db/models/query.py", line 336, in get
    num = len(clone)
  File "/var/www/myproject/myproject/src/django/django/db/models/query.py", line 81, in __len__
    self._result_cache = list(self.iterator())
  File "/var/www/myproject/myproject/src/django/django/db/models/query.py", line 269, in iterator
    for row in compiler.results_iter():
  File "/var/www/myproject/myproject/src/django/django/db/models/sql/compiler.py", line 672, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/var/www/myproject/myproject/src/django/django/db/models/sql/compiler.py", line 726, in execute_sql
    cursor = self.connection.cursor()
  File "/var/www/myproject/myproject/src/django/django/db/backends/__init__.py", line 75, in cursor
    cursor = self._cursor()
  File "/var/www/myproject/myproject/src/django/django/db/backends/postgresql_psycopg2/base.py", line 136, in _cursor
    self.connection = Database.connect(**conn_params)
OperationalError: could not connect to server: Permission denied
\tIs the server running on host "127.0.0.1" and accepting
\tTCP/IP connections on port 5432?

我查了一下conn_params字典,里面有正确的用户名和密码。我的pg_hba.conf看起来像这样(我在 Ubuntu 9.04 服务器上有完全相同的配置,一切运行正常):

local   all         postgres                          ident
local   all         all                               md5
host    all         all         127.0.0.1/32          md5
host    all         all         ::1/128               md5

我究竟做错了什么?

答案1

一个常见的错误是指定明文密码,而根据你的配置文件配置应以 md5 形式提供。
使用 md5 更新配置文件中的密码,然后重试。您可以使用任何 MD5 生成器,例如这个

相关内容