2012-10-14 84 views
0

我配置了一切,因为我会在另一个发行版(我是拱门用户,并且我在桌面机上安装了opensuse)。Django无法连接到Postgresql on Opensuse

由于:

  • Django和所有它要求(psycopg)
  • PostgreSQL的
  • 创建了一个用户对我的Django的服务器
  • 创建的数据库
  • 授予的一切权力对数据库我的新用户

然后,当启动摹执行syncdb开始工作,我得到这个消息,(我已经改变了用户等等。在这个线程的用户:问题,密码:密码,数据库:问题,因为它是与换句话说现实):

FATAL: Ident authentication failed for user "question" 

潜伏后,我得到了主意,改变我的pg_hba.conf文件(位于:/var/lib/pgsql/data/pg_hba.conf)

这是我有:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   ident 
# IPv6 local connections: 
host all    all    ::1/128     ident 

我的Django的conf文件包含:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'question', 
     'USER': 'question', 
     'PASSWORD': 'password', 
     'HOST': '127.0.0.1', 
     'PORT': '', 
    } 
} 

我不明白我在这里错过了什么,有什么想法?

+0

您是否确认通过'psql'连接了相同的信息? –

+0

对不起,我没有,但我不能通过相同的信息通过psql连接(使用此命令:su; su postgres; psql -U问题;我得到:psql:致命:数据库“问题”不存在,这是键入后返回:创建用户问题;作为postgres和获得成功的消息,但是我可以登录,如果我创建一个数据库称为问题,但我仍然将无法manage.py syncdb) – cp151

+0

你可以尝试手动插入东西在通过'psql'连接数据库时?这听起来像是一个权限问题。 –

回答

1

编辑/var/lib/pgsql/data/pg_hba.conf文件并将方法从trust更改为md5。这样Postgres会要求输入密码。

还记得重新加载配置文件。

+0

将其更改为md5并且仍然无效。信任应该接受任何输入 – cp151

+0

我想你可以通过命令行登录,对吧? – arturhoo

+0

也请尝试在'#IPv4本地连接“行中将'ident'更改为'md5'。 – arturhoo

0

你有没有试图改变:

host all    all    127.0.0.1/32   ident 

到:

host all    all    127.0.0.1/32   md5 

看来,您是通过TCP(在pg_hba.confg这么一线连接 “信任” 不适用)并通过ident进行身份验证,这需要在pg_ident.conf中输入。您可能需要“md5”或其他基于密码的身份验证选项之一。

+0

更改为md5,尝试syncdb时仍然出现同样的错误 – cp151

+0

您是否尝试过其他方法(密码,crypt)? – Smith

+0

好吧,更改IPV4后,现在就信任它同步。 Anyidea如何修改它与md5一起使用? – cp151