2016-10-12 53 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行爲

, , ,

,第11行爲pg_connect($conn_string)

傳遞給pg_connect($conn_string)的參數是:

$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因爲我查(用ifconfig),客人有IP 10.0.2.15

我修改的文件pg_hba.confpostgresql.conf,以包括行:

的pg_hba.conf:

host all all 0.0.0.0/0 trust

postgresql.conf中:

listen_addresses = '*'

iptables我添加規則-A INPUT -p tcp -m cp --dport 5432 -j ACCEPT

我也嘗試通過禁用Windows主機上的防火牆。

在一些地方,他們說SELinux阻止連接,但我沒有安裝它在客人。

我能夠使用命令psql -d postgres -U user_switch -W -h localhost中的用戶「user_switch」成功連接到數據庫,其中它提示我輸入密碼。

在此先感謝,請隨時詢問我可能已經忘記的更多規格。

+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'和用於Virtual Box主機專用網絡的'192.168.56.1'。在pg_hba.conf文件中包含兩行,但沒有結果。 –