postgreSQL이 작동하지 않는 .pgpass


13

.pgpass 파일을 /folder/.pgpass에 넣고 다음과 같이 보입니다.

*:*:*:postgres:password_for_postgres

postgreSQL에서 데이터베이스를 백업하는 bash 스크립트가 있습니다.

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

그러나 스크립트는 여전히 암호를 요구합니다. PGPASSFILE은 내가 볼 수있는 한 가치가 있습니다. 문제가 무엇인지에 대한 힌트가 있습니까?

/케이

답변:


8

pgpass 파일이 모드 0600으로 설정되어 있습니까 (예 : 소유자 만 읽기 / 쓰기)? 클라이언트 라이브러리는 그룹 또는 세계가 읽을 수있는 경우이를 무시합니다.


5

내 구성 ( Ubuntu 10.04.3PostgreSQL 8.4)에서 내가 로그인 한 사용자 이름이 .pgpass파일 에서 비밀번호를 얻으려고하는 사용자 이름과 같을 때 마침내 작동하도록 할 수 있습니다.

로 로그인 deployer하여 .pgpass파일 을 사용하여 appnameUnix 사용자가없는 user name 소유의 데이터베이스에 액세스 하려고했습니다 . 사용자로 데이터베이스에 액세스 .pgpass하기 시작하기 전까지 는 작업을 할 수 없었습니다 deployer...

/home/deployer/.pgpass파일 내용 은 다음과 같습니다 .

*:*:*:deployer:password

여기에 한 부분이 있습니다 /etc/postgresql/8.4/main/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

보시다시피, 모든 연결에는 암호 ( md5) 가 필요합니다 .

이 구성을 사용하면이 명령으로 만든 데이터베이스가 있다고 가정합니다.

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

비밀번호를 입력하지 않고 다음 작업을 수행 할 수 있습니다.

deployer@ubuntu-server:~$ dropdb dbname

곧 내가 나의 이름 변경으로 .pgpass까지를 .pgpass-no,이 암호가 필요합니다.

BTW, .pgpass파일에 0600권한이 있어야 함을 잊지 마십시오 .

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
당신은 사용으로 연결하는 페이지의 사용자를 제어 할 수 있습니다 -U에 플래그 dropdbcreatedb
케빈 혼

0

1) 컨텐츠가 포함 된 .pgpass 파일 생성

호스트 : 5432 : somedb : someuser : somepass

2) 명령을 사용하여 권한을 설정하십시오.

sudo chmod 600 .pgpass

3) 파일 소유자를 로그인 한 동일한 사용자로 설정하십시오.

sudo chown login_username : 로그인 _ 사용자 이름 .pgpass

4) PGPASSFILE 환경 변수를 설정하십시오.

PGPASSFILE = '/ home / user / .pgpass'내보내기

이제 데이터베이스에 연결하여 확인하십시오.

psql -h 호스트 -U someuser somedb

비밀번호를 묻지 않고 postgresql에 로그인합니다.

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