postgresql 데이터베이스에 원격으로 액세스


46

12.10 및 postgresql 9.1을 실행하는 DigitalOcean의 VPS에있는 원격 시스템에서 postgresql 데이터베이스에 액세스해야합니다.

어떻게해야합니까? 포트 5432가 닫히는 것을 알았습니다. 어떻게 열 수 있습니까?


1
javabypatel.blogspot.in/2015/07/…에 언급 된 단계를 수행 하고 postgresql.conf 파일에있는 포트 번호를 변경하십시오. 포트를 변경 한 후 PostgreSQL 서버를 다시 시작하십시오.
Jayesh

@Jayesh가 게시 한 Url이 트릭을 수행했습니다. 지침에 따라 개발 컴퓨터 중 하나를 다른 컴퓨터에 성공적으로 연결했습니다 (pgAdmin4가 설치된 Windows에서 Ubuntu 18.04 postgresql 10.9까지)
EAmez

답변:


78

포트 5432를 열려면 편집 /etc/postgresql/9.1/main/postgresql.conf하고 변경하십시오.

listen_addresses='localhost'

listen_addresses='*'

DBMS를 다시 시작하십시오.

invoke-rc.d postgresql restart

지금 당신은 연결할 수 있습니다

$ psql -h hostname -U username -d database

자신을 인증 할 수없는 경우 사용자에게 데이터베이스에 대한 액세스 권한을 부여해야합니다.

당신의 편집

/etc/postgresql/9.1/main/pg_hba.conf

그리고 추가

host all all all md5

(이는 광범위하게 공개 된 액세스를위한 것입니다.보다 엄격한 제어를 위해서는 pg_hba.conf 설명서를 참조하고 필요에 따라 조정하십시오).

이후에는 다시로드해야합니다

invoke-rc.d postgresql reload

이것이 기본 구성이라고 말할 필요는 없습니다. 이제 방화벽을 수정하고 DBMS의 보안을 향상시키는 방법을 고려해야합니다.


4
특히 SSL을 활성화해야합니다.
Craig Ringer

좋아, 나는 이것을 시도했지만 내 컴퓨터에서 pgAdmin을 사용하여 연결하려고하면 "서버가 수신 대기하지 않습니다"라는 메시지가 나타납니다. iptables에 추가하고 iptables -L을 실행하면 다음과 같이 표시됩니다. ACCEPT tcp-어디서나 tcp dpt : postgresql이 사이트에서 IP 및 PORT를 확인할 때 ( yougetsignal.com/tools/open-ports ) 항구가 폐쇄되었습니다
Øyvind

2
서버가 듣고 있습니까? 확인netstat -nlt|grep :5432

1
더 엄격한 방식으로 호스트 행을 삽입합니다.host <database> <user> <remote_client_IPaddress>/24 md5
gc5

Postgresql 버전 9.5의 경우, listen_addresses가 적용되기 전에 서버를 다시 시작해야 할 수도 있습니다.
Heather92065

26

그것이 더 이상 작동하지 않으면 더 이상 작동하지 않습니다.

모든 호스트 * md5

이에 대한 올바른 행은 다음과 같습니다.

모든 0.0.0.0/0 md5 # ipv4 범위를 모두 호스팅

모두 호스트 :: 0/0 md5 # ipv6 range

모든 호스트 모두 md5 #all ip

출처


4
이것은 분명히 트릭을했다. 위의 답변은 확실히 작동하지 않았습니다.
Mike

@ 마이크로 올바른 것을 표현하십시오 : host all all all md5잘 작동합니까? 맞습니까? 보안 문제가 있습니까?
피터 크라우스

@ peterkrauss 네, 모든 md5가 저를 위해 일한 모든 호스트하십시오. 보안 문제? 물론 그렇습니다.하지만 내가하고있는 일은 괜찮 았습니다. (내부 네트워크)
Mike

3

"서버가 듣지 않는다"는 메시지는 postgresql.conf 아카이브에서 #을 지우지 않습니다.

# listen_addresses = 'localhost'

에:

listen_addresses = '*'

(내 영어 죄송합니다).


0

가장 많이 투표되고 수용되는 답변에는 심각한 보안 문제가 있습니다. 이 방법은 기본적으로 비활성화되어 있습니다.

다음으로 로컬 포트 ​​전달을 더 잘 사용하십시오 ssh.

ssh -L local_port:localhost:foreign_port user@server

포트 전달을 시작하십시오.

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(구성에 맞게 로컬 및 외부 포트를 변경하십시오).

그런 다음 로컬 컴퓨터에서 데이터베이스에 직접 연결할 수 있습니다.

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