You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac远程连接虚拟机中PostgreSQL失败,求解决方案

排查远程PostgreSQL连接超时的额外方案

我之前折腾过类似的跨平台VMware远程PostgreSQL连接问题,看你已经做了核心的PostgreSQL配置、重启服务、关闭主机防火墙,而且本地和同VM内的虚拟机能正常连接,Nmap扫端口也显示开放,那问题大概率出在跨平台的网络链路转发或者VMware的网络配置细节上,给你几个具体的排查方向:

  • 检查VMware的网络模式与端口转发设置
    如果你的Ubuntu虚拟机用的是NAT模式,Windows主机的IP并不会直接映射到虚拟机的5432端口,得手动配置端口转发:

    1. 打开VMware Workstation,找到目标Ubuntu虚拟机的「设置」→「网络适配器」→「NAT设置」
    2. 添加端口转发规则:主机端口设为5432,虚拟机IP填Ubuntu的内网IP(比如192.168.x.x),虚拟机端口5432,协议选TCP
    3. 保存后重启虚拟机的PostgreSQL服务,再用Mac尝试连接
  • 确认Windows主机的实际可用IP
    你报错里的169.254.121.2是Windows的自动私有IP(APIPA),说明主机可能没获取到有效的局域网IP,或者你填错了IP。可以在Windows主机的命令行执行ipconfig,找到当前联网网卡(无线/有线)的IPv4地址,用这个真实的局域网IP替换报错里的地址再试。

  • 检查Mac端的防火墙拦截
    你关闭了Windows主机的防火墙,但Mac本身的防火墙可能拦截了出站的5432端口请求:

    1. 打开Mac的「系统设置」→「网络」→「防火墙」
    2. 确认防火墙是否开启,如果开启,检查是否允许终端(Terminal)的网络访问,或者临时关闭防火墙测试连接
  • 验证PostgreSQL是否真的监听了所有地址
    在Ubuntu虚拟机里执行以下命令,确认PostgreSQL确实在监听0.0.0.0:5432:

    ss -tulpn | grep 5432
    

    如果输出里显示的是127.0.0.1:5432,说明postgresql.conf的修改没生效——可能是你编辑了错误的配置文件(比如PostgreSQL多版本共存时,配置文件路径不同),可以用ps aux | grep postgres找到进程对应的配置文件路径。

  • 检查Windows主机的IP转发功能
    有时候Windows默认没开启IP转发,导致外部流量无法转发到虚拟机:

    1. 以管理员身份打开Windows命令行,执行netsh interface ipv4 show interfaces找到VMware的虚拟网卡(通常是VMnet8)
    2. 执行netsh interface ipv4 set interface "VMnet8" forwarding=enabled开启IP转发
    3. 重启Windows主机的网络服务后再测试
  • 尝试直接连接Ubuntu虚拟机的局域网IP
    如果Windows主机和Mac在同一个局域网,且Ubuntu虚拟机用的是桥接模式,你可以直接获取Ubuntu的内网IP(执行ifconfig或ip addr),然后在Mac终端用这个IP连接:

    psql -U postgres -h 192.168.x.x
    

    这样能绕开Windows主机的转发,直接测试虚拟机的网络可达性。

如果以上方案都不行,可以补充这些信息:VMware虚拟机的网络模式(NAT/桥接/仅主机)、Windows主机的局域网IP、Ubuntu虚拟机的内网IP,还有Mac和Windows主机是否在同一个局域网内。

内容的提问来源于stack exchange,提问作者Janton Zeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:40:59