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

나는 호스트 변수를 사용하여 시도 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"



답변

빠른 솔루션

문제는 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


답변

때로는 사용할 수 있습니다

sudo -u postgres pg_dump ...


답변