无法从 Windows 主机上的 PgAdmin 连接到 Virtualbox Xubuntu 来宾中的 Postgresql

问题描述 投票:0回答:1

我正在尝试连接到 Virtualbox 上 Xubuntu 20.04 来宾内部的 Postgresql 数据库。我可以在来宾中正确连接到 postgresql 服务,并使用主机上的 PgAdmin 连接到我的 Windows postgresql 服务。我已经尝试过在这里找到的有关超级用户和服务器故障的其他问题的解决方案,但没有成功。

当网络适配器工作时(例如我的笔记本电脑已连接到 WiFi),我收到“无法连接到服务器 - 超时已过期”错误,我认为这与主机 pgadmin 和来宾 postgres 问题有关。然而,当没有网络时(例如,适配器可能已打开,但没有可用的 WiFi),我会收到“无主机路由”错误,询问我是否确定在指定的 IP 和端口处有某些东西正在侦听。这是不希望的,因为我需要访客和主机在没有任何可用外部网络的情况下进行连接。

这是我的配置:

  • 来宾:

    • Postgresql 16 默认安装(作为带有自动启动的 systemctl 服务运行)
    • 通过 postgresql.conf 上的设置
      listen_addresses = '*'
      监听所有连接
    • 使用以下选项配置密码访问:
    sudo sed -i '/^host/s/ident/md5/' /etc/postgresql/16/main/pg_hba.conf
    sudo sed -i '/^local/s/peer/trust/' /etc/postgresql/16/main/pg_hba.conf
    echo "host all all 0.0.0.0/0 md5" | sudo tee -a /etc/postgresql/16/main/pg_hba.conf
    

    我后来按照相关答案之一将最后更改为

    echo "host all all 0.0.0.0/0 trust" | sudo tee -a /etc/postgresql/16/main/pg_hba.conf
    ,但两者都不起作用

    • 在 postgres 用户中的
      psql
      命令中为 postgres 用户设置自定义密码
    • ss -pan | grep postgres
      pg_lsclusters
      的输出表明postgres确实正在监听端口5432并且在线(见下图)
    • 允许此端口通过防火墙
      sudo ufw allow 5432/tcp
    • ip 地址和 ifconfig 的输出显示访客的 IP 地址为 10.0.2.15(见下图)
  • 在主机上

    • 从ipconfig获取IP,显示是192.168.56.1。它是从所有 wifi 和以太网适配器断开连接时仍然可用的唯一选项中获得的(见下图,不过文本是西班牙语)
    • 将 pgadmin4 设置为在固定端口(5050)下工作,在文件/运行时/配置中进行编辑,如图所示
    • 尝试使用上面获得的设置创建到来宾 Postgresql 的连接:ip 10.0.2.15、端口 5432、用户 postgres(我使用默认值)和我的自定义密码(见图) *这是我收到错误的地方
  • 在 Virtualbox 上:

    • 网络设置正在使用NAT
    • 创建了端口转发规则,包括主机 IP、pgadmin 固定端口、来宾 IP 和来宾的 postgresql 服务端口(再次参见图片,文本是西班牙语,但顺序与我提到的顺序相同)。我正在使用 TCP,因为我发现这是 postgres 使用的协议
    • 访客已重启多次

知道如何修复它吗?以及如何在 WiFi 和以太网断开连接的情况下使用它(No rouge to host 错误)?

postgresql networking virtual-machine virtualbox portforwarding
1个回答
0
投票

没关系,是我把端口转发的概念弄错了。从 pgadmin 连接时,地址和端口应该是来自主机的地址和端口(对我来说 192.168.56.1:5050),并且它们将被转发到规则中指定的访客地址

© www.soinside.com 2019 - 2024. All rights reserved.