2016-10-12 2 views
2

PHP 스크립트를 통해 가상 머신의 PostgreSQL 데이터베이스에 연결하려고했지만 실패했습니다.PHP - 가상 머신의 PostgreSQL 데이터베이스 연결에 실패했습니다.

호스트 (Windows 8.1)에서 php를 실행하고 postgresql은 가상 시스템 (Debian 8.6)에 있습니다. 나는 VirtualBox를 사용한다.

브라우저에서 오류 출력은 다음과 같습니다

경고 : pg_connect() : 서버에 연결할 수 없습니다 : PostgreSQL 서버에 연결할 수 없습니다 연결 시간이 초과되었습니다 (0x0000274C/10060)는 "호스트에서 실행중인 서버입니다 10.0.2.15 "포트 5432에서 TCP/IP 연결을 수락 하시겠습니까? 11 행 C : \ xampp \ htdocs \ pg_test.php

행 11은 pg_connect($conn_string)입니다. pg_connect($conn_string)에 전달

매개 변수는 다음과 같습니다 I 게스트가 IP 10.0.2.15을 가지고 (ifconfig를 포함) 확인하기 때문에

$host = "host=10.0.2.15"; 
$port = "port=5432"; 
$dbname = "dbname=postgres"; 
$user = "user=user_switch"; 
$password = "password=switch"; 
$conn_string = "$host $port $dbname $user $password"; 
pg_connect($conn_string); 

내가 host=10.0.2.15를 사용합니다.

있는 pg_hba.conf :

host all all 0.0.0.0/0 trust

는 postgresql.conf :

listen_addresses = '*'

iptables I에서

나는 라인을 포함, 파일 pg_hba.confpostgresql.conf 수정 규칙을 추가했습니다 -A INPUT -p tcp -m cp --dport 5432 -j ACCEPT

또한 Windows 호스트에서 방화벽을 해제하여 시도했습니다.

일부 지역에서는 SELinux가 연결을 차단한다고하지만 일부는 게스트에 설치되어 있지 않습니다.

게스트에서 "user_switch"사용자를 사용하여 데이터베이스에 성공적으로 연결할 수 있습니다. psql -d postgres -U user_switch -W -h localhost으로 암호를 입력하라는 메시지가 나타납니다.

미리 감사드립니다. 잊어 버린 사양에 대해 문의 해 주시기 바랍니다.

+0

'psql -d postgres -U user_switch -W -h 10.0.2.15'를 사용하여 게스트 시스템에서 연결할 수 있습니까? – pietrop

+0

@pietrop이 에러는 다음과 같습니다 :'psql : FATAL : pg_hba에 줄이 없습니다.conf <<10.0.2.15>> 사용자 <> 데이터베이스 <> SSL 비활성 ' –

답변

2

호스트와 게스트는 동일한 네트워크에 있어야합니다. 호스트에 192.168.56.1, 게스트에 192.168.56.101과 같이 둘 모두에 적절한 주소를 할당해야합니다. 보안상의 이유로, 당신은 어떤 IP (0.0.0.0/0)의 연결을 허용하는 행을 제거해야하며, pg_hba.conf에 다음 줄을 추가합니다 :

host all all 192.168.56.0/24 trust 

을과 PostgreSQL을 다시 시작합니다. 이렇게하면 게스트에 대한 모든 연결 시도가 192.168.56.x에서 가능합니다.

+0

여전히 호스트에서 연결하도록 허용하지 않지만 게스트에서 내 의견에 따라 명령에 연결할 수 있습니다. –

+0

@DeRipper 호스트 컴퓨터의 주소는 무엇입니까? – pietrop

+0

Wi-Fi 연결의 경우 '192.168.1.37'이고 가상 박스 호스트 전용 네트워크의 경우 '192.168.56.1'입니다. pg_hba.conf 파일에 두 행 모두 포함되어 있지만 결과는 없습니다. –