2012-04-17 5 views
1

내가 우분투 11.10에서 함께 사용자 PostgreSQLDjango에 배우고 장고에 PostgreSQL을 데이터베이스에 액세스 할 수 없습니다, 나는 내가 PostgreSQL을 설치할 때 내가 만든 사용자로 전환 할 필요가 있음을 발견했다 터미널에서 ("sudo su postgres"을 통해) 장고에서 작업 할 데이터베이스를 만들고 액세스하십시오. 아쉽게도 "postgres" 사용자는 로컬 파일 시스템에 파일 쓰기 권한이 없으므로 이미지 필드가있는 데이터베이스에 모델 개체를 추가하는 것과 같은 특정 작업을 수행하려고하면 차단됩니다. 내가 터미널 내 일반 우분투 사용자 이름으로 전환 장고의 dev에 서버에 내 관리 사이트에 액세스하려고하면, 나는 오류 다음과 같이 얻을 :정상 우분투 리눅스 사용자

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 사용자 간의 관계를 이해할 수 없기 때문에 이해할 수 없습니다. 누군가 내 PostgreSQL 데이터베이스에 내 일반적인 Ubuntu 사용자 이름 액세스 권한을 부여 할 수있는 방법을 설명해 주시겠습니까? PostgreSQL 문서를 사용하여 함께 작성하려고 시도 했으므로 지침의 특정 목록이 필요할 것입니다. 완전히 잃어 버렸습니다.

+1

가능한 복제 http://stackoverflow.com/questions/8167602/django-connection-to-postgresql-peer-authentication-failed – cfedermann

+0

여기에서 실제로하려는 것은 분명하지 않습니다. 개체가 데이터베이스 엔진에 의해 관리되는 경우 일반적으로 데이터베이스 연결을 통해 해당 개체에 직접 액세스해야합니다. 이 오류가 발생하면 무엇을하려고합니까? – kgrittn

답변

8

cfedermann이 정확했습니다. 이은 질문의 중복 :

Django connection to PostgreSQL: "Peer authentication failed"

및 솔루션은 동일합니다. 내 Django 프로젝트의 'settings.py'파일에서 DATABASES 섹션 아래에 내장 된 주석 (Django 개발자가 작성한 주석)이 있기 때문에 'HOST'는 빈 문자열로 설정되었습니다. '로컬 호스트에 빈 문자열로 설정'이라고 말합니다. 필자가 명시 적으로 'localhost'를 입력 한 후에 만 ​​내 기본 Linux 사용자 이름 아래에서 내 psql 데이터베이스에 연결할 수 있었기 때문에 이것은 사실이 아닙니다.

내가 여기있는 교훈은 개발에 postgresql을 사용하려고하는 다른 모든 초보 사용자들에게 '설정'에 'LOCALHOST'을 입력했는지 확인하는 것입니다.py '파일을 열지 않으면 자신의 컴퓨터에 저장된 psql 데이터베이스에 연결할 수 없습니다!

cfedermann에게 다시 답변 해 주셔서 감사합니다.

+2

이것이 사실이라면, 교훈은 장고에 버그를 제기하는 것입니다. – mlissner

1

Postgres ident notes

일반 사용자는 로컬 호스트에서 로그인 할 수되지 않을 수 있습니다. django 프로젝트가 PG 데이터베이스와 동일한 컴퓨터에서 실행되고 있다면 pg_ident.conf 파일을 확인해야합니다.

기본적으로 유닉스 사용자가 자동으로 postgre 사용자로 매핑되도록 설정할 수 있습니다. 따라서 pgsql을 실행하면 사용자가 로그인을 시도합니다. 사용자가 외부 IP 또는 로컬 호스트에서 로그인하는 것을 차단할 수 있습니다 . 따라서 장고 설정을하기 전에이 설정을 먼저 확인하십시오. ELSE

다음

su postgres 
psql 
create database djangodb; 
create role djangouser with password 'something'; 

당신의 settings.py 파일에 그 사용자의 세부 사항을보십시오 유닉스 포스트 그레스 사용자의 암호를 입력 아마 당신은이

sudo passwd postgres 

을해야이

괜찮 시도 . 포스트 그레스 here ALSO

Ident methodsThe pg_hba.conf file

이 예를하는 데 도움이

에 대한 자세한?

+0

안녕하세요, nialloc, 팁 주셔서 감사합니다. 불행히도 pg_indent.conf를 열어서 (sudo gedit /etc/postgresql/9.1/main/pg_indent.conf를 사용하여) 그 안에 무엇이 들어 있는지 살펴 보았을 때 빈 파일이 나타납니다. 내부에있는 것을보기 위해 다른 방법으로 열어야합니까? – GChorn

+0

나는 내 대답을 수정하겠다. – nialloc

+0

여분의 설명을 해주셔서 감사합니다. 그러나 아래를 보면, 제 생각에 필자가 내 자신의 질문에 대답 한 것을 볼 수 있습니다. 다시 한번 감사드립니다! – GChorn

관련 문제