[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
위에서 간단히 trust
postgres로 변경 하고 다시로드하면됩니다.
# Don't require a password for local connections
local all all trust
답변
때로는 사용할 수 있습니다
sudo -u postgres pg_dump ...