2017-01-16 47 views
0

我在macOS上的Vagrant centos 7.2上運行postgresql。我已經確認postgres已經啓動並運行在端口5432上的Vagrant框中,通過在框上使用psql連接到它。我試圖如下對流浪箱轉發端口5432到10001端口我的主機上:在macOS上流浪的端口?

config.vm.define "acc_db" do | acc_db | 
    acc_db.vm.box = "bento/centos-7.2" 
    acc_db.vm.hostname = "acc.db" 
    acc_db.vm.network :forwarded_port, guest: 5432, host: 10001 

    acc_db.vm.provision "shell", 
     inline: "yum upgrade -y -q --nogpgcheck" 

    acc_db.vm.provision "shell", 
     path: "install_postgres.sh" 

我已經改變了我的pg_hba.conf綁定到所有的IP地址,並允許密碼驗證,如下圖所示:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          peer 
# IPv4 local connections: 
host all    all    0.0.0.0/0   md5 
# IPv6 local connections: 
host all    all    ::1/128     ident 

我已經關閉了防火牆,但我仍然無法連接到的Postgres上10001端口的主機上:

psql: could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/tmp/.s.PGSQL.10001"? 

我該如何解決這個問題,使端口轉發工程?

我見過https://gielberkers.com/fixing-vagrant-port-forwarding-osx-yosemite/但由於涉及感人的文件我不熟悉還沒有嘗試過。這是正確的方法嗎?看起來你必須明確允許你想通過Vagrant轉發的每個端口。

回答

1

...connections on Unix domain socket "/tmp/.s.PGSQL.10001"意味着你是不是嘗試一個TCP/IP連接,這樣的端口轉發也不會發生。

默認情況下,psql在類Unix操作系統使用Unix domain sockets

使用PSQL的-h選擇,如果使用IPv4到指定主機,想必127.0.0.1


此外,PostgreSQL服務器必須偵聽連接將被路由到的網絡接口。默認情況下,出於安全原因,它僅監聽localhost
設置listen_addresses='*'postgresql.conf使它監聽所有現有的接口。

+0

謝謝。我把-h選項放在:'psql -h 127.0.0.1 -p 10001 -u username',我得到'psql:server意外地關閉了連接。我在postgres日誌中看不到任何錯誤。 – user783836

+0

@ user783836:你在'postgresql.conf'中有'listen_addresses ='*''來讓它監聽所有的接口嗎? –

+0

太棒了!這工作謝謝! – user783836