在macOS上的流浪港端口?

时间:2017-01-16 13:11:18

标签: macos postgresql vagrant

我在macOS上的Vagrant centos 7.2框上运行postgresql。我已经确认postgres在端口5432上的Vagrant盒子上启动并运行,方法是使用盒子本身上的psql连接到它。我试图将Vagrant盒子上的端口5432转发到我的主机上的端口10001,如下所示:

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

我关闭了防火墙,但我仍然无法连接到主机上端口10001上的postgres:

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 个答案:

答案 0 :(得分: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服务器必须侦听连接将被路由到的网络接口。默认情况下,出于安全原因,它仅侦听localhostlisten_addresses='*'中设置postgresql.conf会使其监听所有现有接口。