12.10 및 postgresql 9.1을 실행하는 DigitalOcean의 VPS에있는 원격 시스템에서 postgresql 데이터베이스에 액세스해야합니다.
어떻게해야합니까? 포트 5432가 닫히는 것을 알았습니다. 어떻게 열 수 있습니까?
12.10 및 postgresql 9.1을 실행하는 DigitalOcean의 VPS에있는 원격 시스템에서 postgresql 데이터베이스에 액세스해야합니다.
어떻게해야합니까? 포트 5432가 닫히는 것을 알았습니다. 어떻게 열 수 있습니까?
답변:
포트 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의 보안을 향상시키는 방법을 고려해야합니다.
host <database> <user> <remote_client_IPaddress>/24 md5
그것이 더 이상 작동하지 않으면 더 이상 작동하지 않습니다.
모든 호스트 * md5
이에 대한 올바른 행은 다음과 같습니다.
모든 0.0.0.0/0 md5 # ipv4 범위를 모두 호스팅
모두 호스트 :: 0/0 md5 # ipv6 range
모든 호스트 모두 md5 #all ip
host all all all md5
잘 작동합니까? 맞습니까? 보안 문제가 있습니까?
가장 많이 투표되고 수용되는 답변에는 심각한 보안 문제가 있습니다. 이 방법은 기본적으로 비활성화되어 있습니다.
다음으로 로컬 포트 전달을 더 잘 사용하십시오 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