pg_dump를 올바르게 인증하려면 어떻게해야합니까?


98

나는 호스트 변수를 사용하여 시도 PGPASSWORD등을 .pgpass하고 어느 쪽도이 두 가지의 나를 데이터베이스에 인증 할 수 없습니다. 나는이 chmod'D를 .pgpass적절한 권한도 시도했다 :

export PGPASSWORD=mypass and PGPASSWORD=mypass

암호에는가 포함되어 \있지만 작은 따옴표로 묶었 PGPASS='mypass\'고 여전히 인증되지 않습니다.

나는 뛰고있어:

pg_dump dbname -U username -Fc

그리고 나는 여전히 받는다

pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL:  Peer authentication failed for user "username"

1
오류 메시지의 "... 피어 인증 ..."부분은 암호 인증 을 전혀 사용하지 않음을 의미 합니다.
Milen A. Radev

답변:


196

빠른 솔루션

문제는 peer현재 사용자 이름을 기반으로 로컬 인증 을 수행하려고한다는 것 입니다. 암호를 사용하려면로 호스트 이름을 지정해야합니다 -h.

pg_dump dbname -U username -h localhost -F c

설명

이것은 귀하의 pg_hba.conf

local   all             all                                     peer
host    all             all             127.0.0.1/32            md5

이렇게하면 Postgres가 peer현재 시스템 사용자 이름과 일치하도록 postgres 사용자 이름이 필요한 로컬 사용자에 대한 인증 을 사용하도록 지시 합니다. 두 번째 줄은 호스트 이름을 사용하는 연결을 나타내며 md5방법을 통해 암호로 인증 할 수 있습니다 .

내가 선호하는 개발 구성

참고 : 단일 사용자 워크 스테이션에서만 사용해야합니다. 이로 인해 프로덕션 또는 다중 사용자 시스템에서 주요 보안 취약점이 발생할 수 있습니다.

로컬 postgres 인스턴스에 대해 개발할 때 로컬 인증 방법을 trust. 이렇게하면 암호가없는 모든 사용자로 로컬 유닉스 소켓을 통해 postgres에 연결할 수 있습니다. peer위에서 간단히 trustpostgres로 변경 하고 다시로드하면됩니다.

# Don't require a password for local connections
local   all             all                                     trust

6
conf 파일이 어디에 있는지 확실하지 않은 사람을 위해 : 사용 sudo locate pg_hba.conf하십시오-postgres 사용자가 디렉토리에 대한 액세스 권한을 가진 유일한 사용자이기 때문에 sudo 여야합니다.
jcollum 2014-06-25

귀하의 명령이 저에게 효과적이지만 파일이 어디에 있는지 또는 파일 이름이 무엇인지 알 수 없습니다. 어떻게 해당 파일을 찾을 수 있습니까?
Sobhan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.