I'm on RHEL 5.4, and I've set up a Django project using PostgreSQL as the database (I've used MySQL before, but want to try something new :) ). When I run the Django test server, everything works, I can also connect trough the command line with password authentification:
psql -U myuser -h 127.0.0.1
But when I try to access my project over Apache, I get a 500 error code and this python traceback in apache's error log:
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?
I checked the conn_params
dictionary, it contains the correct username and password. My pg_hba.conf
looks like this (I have the same exact configuration on an Ubuntu 9.04 server, where everything works peachy):
local all postgres ident
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
What am I doing wrong?
One of the common mistakes is to specify password in plain text, while according to your pg_hba.conf configuration it should be supplied as md5.
Update the password in your configuration file with it's md5 and try again. You may use any MD5 generator for that, like this one.