-w 플래그가 있는 pg_dump가 .pgpass 파일에서 읽혀지지 않습니다.

-w 플래그가 있는 pg_dump가 .pgpass 파일에서 읽혀지지 않습니다.

PostgreSQL 데이터베이스를 백업하려고 합니다.크루DBUbuntu 18.04 LTS에서 다음 명령이 포함된 스크립트를 사용하세요.

pg_dump -h localhost -p 5432 -U postgres -w -C -F p -b -v -f ~/Dropbox\/postgres_backup/crewdb.backup.sql crewdb

위 명령이 실행되는 스크립트 자체가 작동한다는 것을 알고 있습니다. -w 대신 -W를 사용하여 위 명령을 실행하면 비밀번호를 묻는 메시지가 표시되고 백업이 원활하게 진행됩니다. 스크립트 내에서 이 명령을 자동화하려고 하며 -w 플래그를 사용하여 비밀번호를 묻는 메시지를 표시하지 않고 백업이 진행되기를 원합니다. 이를 위해 다음 파일을 만들었습니다.

/home/chh1/.pgpass

언제ls -la ~/.pgpass

-rw------- 1 chh1 chh1 74 Oct 15 10:00 .pgpass

.pgpass 파일 안에 다음 텍스트를 배치했습니다.

# Server:Port:Database:Username:Password

*:*:crewdb:postgres:9Gh#$mq

그러나 명령을 실행하면 다음 오류 출력이 표시되고 백업이 실패합니다.

pg_dump -h localhost -p 5432 -U postgres -w -C -F p -b -v -f ~/Dropbox\/postgres_backup/crewdb.backup.sql crewdb

pg_dump: [archiver (db)] connection to database "crewdb" failed: FATAL: password authentication failed for user "postgres" password retrieved from file "/home/chh1/.pgpass" FATAL: password authentication failed for user "postgres" password retrieved from file "/home/chh1/.pgpass"

여기 누구든지 나를 올바른 길로 인도할 수 있다면 정말 감사하겠습니다!

답변1

이 질문에 대한 답을 찾았습니다.

달릴 때

hexdump -C ~/.pgpass

나는 다음과 같은 결과를 얻었습니다.

00000000  23 20 68 6f 73 74 6e 61  6d 65 3a 70 6f 72 74 3a  |# hostname:port:|
00000010  64 61 74 61 62 61 73 65  3a 75 73 65 72 6e 61 6d  |database:usernam|
00000020  65 3a 70 61 73 73 77 6f  72 64 0a 2a 3a 2a 3a 63  |e:password.*:*:c|
00000030  72 65 77 64 62 3a 70 6f  73 74 67 72 65 73 3a 39  |rewdb:postgres:9|
00000040  47 68 23 24 6d 71 20 0a                           |Gh#$mq .|
00000048

다섯 번째 줄에는 비밀번호 끝 부분의 공백을 가리키는 20이 나열되어 있지만 줄 끝 부분 앞에 있어서 비밀번호 끝에 있어서는 안되는 공백이 있음을 나타냅니다. 공백을 제거한 후 암호를 묻지 않고 명령이 실행되었습니다.

이 질문에 대한 답변은 ServerVault의 Daniel Vérité가 제공했습니다.

관련 정보