Vagrant - 如何从主机访问客户端的Postgres服务器

3

我安装了一个Vagrant box,并在其中运行了一个Postgres服务器,端口为5432,我将其添加到了Vagrantfile中:

  config.vm.network "private_network", ip: "192.168.33.33"
  config.vm.network "forwarded_port", guest: 5432, host: 3333

但是,当我尝试通过连接到192.168.33.33:3333来连接postgres服务器时,我会遇到这个错误: enter image description here 拒绝连接,这与尝试连接未打开的任何端口时收到的错误相同。我在192.168.33.33上运行了端口扫描器,并没有看到任何转发端口打开。实际上,这就是我在Vagrantfile中的设置:
  config.vm.network "forwarded_port", guest: 8000, host: 8001
  config.vm.network "forwarded_port", guest: 3333, host: 3334
  config.vm.network "forwarded_port", guest: 5555, host: 5556
  config.vm.network "forwarded_port", guest: 5432, host: 3333

  config.vm.network "forwarded_port", guest: 80, host: 8888,
    auto_correct: true

以下是端口扫描器的结果:

enter image description here

它没有检测到995以上的任何端口。我如何访问VM的PostgreSQL服务器?

更新: 我找到了一种通过localhost连接的方法(charlies建议),似乎config.vm.network "forwarded_port"仅将端口转发到localhost。此外,我按照这个指南进行操作: https://pseudoscripter.wordpress.com/2016/04/26/allow-remote-hosts-to-connect-to-postgresql-database-server-on-vagrant-box/

并编辑了postgresql.conf文件,使其监听所有IP地址,添加了这一行:

listen_addresses = '*'         # what IP address(es) to listen on;

我已编辑pg_hba.conf文件,以允许来宾IP地址的访问:

host    all             all             192.168.33.33/24        md5

^^ 这一步可能与在 localhost:3333 上运行无关。从那个指南中的步骤没有使连接到192.168.33.33:3333,但是我可以连接到localhost:3333

已解决 与其尝试通过转发端口访问客户端IP上的服务器,可以在客户端端口上访问它,所以现在我可以在192.168.33.33:5432上访问该服务器。当我第一次尝试时,这对我不起作用,因此需要执行“更新1”中的步骤才能使其可访问。


据我所知,Vagrant将在“localhost”绑定转发端口,因此您应连接到“localhost:3333”。 - charli
是的,你说得对,那个方法可行。之前它不起作用,但我修改了一些东西,所以我会更新原始帖子。能够使用客户机的IP仍然是很好的。肯定有办法可以做到这一点,但像这样做也同样有效。谢谢。 - Horse O'Houlihan
1个回答

2
阅读您的问题后,我注意到了“private_network”配置。这使得您的“guest host”拥有该IP地址,因此您应该能够连接到192.168.33.33:5432。PostgreSQL在VM中监听端口5432。请注意,您的主机应该在同一网络中才能访问。如果不是,请在主机和VM之间添加静态路由。
“forwarded_port”选项将映射主机上的一个端口与客户端上的一个端口。
config.vm.network "forwarded_port", guest: 5432, host: 3333

将会映射 localhost:3333(或者你在主机上拥有的任何IP地址)到192.168.33.33:5432

关于pg_hba.conf配置,它可以防止未经授权的访问,但是你仍然可以连接到服务器,因此错误消息会有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接