2011-11-20 2 views
1

Django 사이트의 데이터베이스 덤프를 만들려고하지만 Django의 기본 dumpdata 명령은 대용량 데이터베이스의 경우 끔찍하기 때문에 pg_dump를 사용하고 싶습니다.왜 psycopg2가 데이터베이스에 연결할 수 있습니까?

이 작동 :

python 
>>> import psycopg2 
>>> psycopg2.connect(database='blah',user='blah',password='blah',host='localhost') 

bash 
# psql -U blah blah 
psql: FATAL: Ident authentication failed for user "blah" 
# pg_dump -U blah blah 
pg_dump: [archiver (db)] connection to database "blah" failed: FATAL: Ident authentication failed for user "blah" 

내 검색이 어쩌면 내가 /etc/postgresql/9.0/main/pg_hba.conf에 "비밀"에 "답하라"로 변경해야한다는 제안이 작동하지 않습니다. 그것은 합리적인 변화일까요? 파이썬 psycopg2에서 이미 잘 작동하는 어떤 방법을 사용해도 pg_dump에 들어갈 수없는 이유는 무엇입니까?

+1

코드에있는 것과 동일한 옵션을 지정해 보았습니까? 즉'psql -h localhost -u blah -W' – nos

답변

4

psql/pg_dump 명령 줄에 -h localhost을 입력하면 유닉스 소켓 대신 TCP 소켓을 통해 연결됩니다. 이것들은 pg_hba.conf에 정의 된 다른 인증 방법을 가질 수 있습니다. "ident 인증"은 유닉스 소켓에만 적용되기 때문에 그 일은 분명히 드러난다.

"로컬"행 (유닉스 소켓)에 대해 "ident"대신 "md5"를 사용하도록 pg_hba.conf를 변경하면 유닉스 사용자 이름을 식별하는 대신 postgresql 사용자 계정에 정의 된 암호를 사용하는 것이 좋습니다. postgresql 사용자 이름.

기본 Debian 설정에서 "postgres"로 인증하는 줄은 따로 따로두기 때문에 다른 사용자의 기본값을 md5로 변경하거나 원하는대로 신뢰할 수 있으며 하나의 계정 만 보호 할 수 있습니다. Istr 데비안/우분투의 디폴트 인 "ident"인증이 도움이되는 것보다 더 혼란 스럽다는 점에 대해 Postgres 사용자들의 중얼 거림

+0

'-h localhost'가 트릭을했습니다. 고맙습니다! – krubo

관련 문제