2014-04-14 6 views
0

보안상의 이유로 사용자 이름 & 암호를 제공하지 않고 Postgres에서 dblink 연결을 어떻게 만듭니 까? 다음 쿼리를 실행PostgreSQL 사용시 인증 문제

이 오류를 반환

SELECT dblink_connect('conn_1','dbname=adatabase'); 

"could not establish connection 08001" 

내 pgpass.conf 파일에 다음 항목이 나는 pgAdmin에서 포스트 그레스의 사용자로 스크립트를 실행 해요 : 사용

localhost:5432:*:postgres:apassword 

dblink_connect_u도 같은 오류를 반환합니다.

나는 윈도우 2012 서버

답변

1

당신은 PostgreSQL 데이터베이스에 연결하는 경우, 당신은 당신이에 연결하는 서버에서 your pg_hba.conf을 수정할 수 있도록 그 암호없이 연결이 로컬 컴퓨터에서 사용자에 대해 사용할 수 있습니다 (예를 들어) :

local all youruser     trust 
host all youruser 127.0.0.1/32 trust 
host all youruser ::1/128  trust 

이상적으로 dblink를 위해 특별히 서버에 PostgreSQL 사용자를 생성하고 필요한 권한 만 부여하면됩니다 (예 : 특정 테이블에 SELECT 만).

+0

IPv6 트러스트 라인을 pg_hba.conf에 추가하는 것은 트릭을 만들었지 만 이유는 확실하지 않습니다. 서버 자체에서 테스트 스크립트를 실행하고 있습니다 (예 : 클라이언트와 서버가 같은 시스템). 설명 할 수 있습니다. – minus34

1

서버가에 액세스 할 수없는 자신의 pgpass 파일이 아닌 "당신을"사용에 포스트 그레스 9.2을 실행하고 있습니다.

dblink_connect_u 문서에서 발췌 한 부분을 보면 다음과 같습니다

Also, even if the remote server does demand a password, it is possible for the password to be supplied from the server environment, such as a ~/.pgpass file belonging to the server's user.

유닉스에서는이 ~postgres/.pgpass 것, Windows에서 서버의 프로세스를 실행하는 OS 사용자에 따라 해당 위치를 찾아야한다 (중 postgres 또는 시스템 계정, 설치 관리자에 따라 다름).

OS 사용자가 홈 디렉토리가 없거나 여기에 pgpass.conf을 입력하는 것이 현명하지 않은 경우 PGPASSFILE 환경 변수를 통해 다른 위치를 설정할 수 있습니다. Windows 관리자가 특정 서비스에 대한 환경 변수를 설정하는 방법을 알 수는 없습니다.

+0

기억하기 좋은 점. 나는 서버 자체에서 테스트 스크립트를 실행 중이다. – minus34