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

如何配置Google VM代理,让本地客户端连接Postgres数据库?

解决Google VM内自建Postgres的本地客户端连接问题

你之前用错工具了——Cloud SQL Proxy是专门对接Google Cloud SQL托管数据库的,而你是在VM实例里自行部署的Postgres,正确的做法是通过SSH隧道实现本地访问,和你用gcloud compute ssh连接VM的逻辑一致。

步骤1:建立SSH端口转发隧道

Postgres默认端口为5432,直接通过gcloud compute ssh命令创建端口映射,把本地端口的请求转发到VM内的Postgres端口:

gcloud compute ssh --project=name_of_project --zone=us-central1-a name_of_virtual_machine -- -L 8060:localhost:5432

参数说明:

  • -L 本地端口:VM内目标地址:VM内目标端口:这里localhost:5432是VM内部访问Postgres的地址(因为Postgres和Tableau同属一个VM),该命令会把本地8060端口的请求转发到VM的5432端口。

步骤2:配置VM内的Postgres权限

确保Postgres允许隧道过来的连接:

  1. 编辑postgresql.conf,将listen_addresses设为'*'或保留localhost(默认通常已包含localhost);
  2. 编辑pg_hba.conf,添加允许本地连接的规则(根据你的认证方式调整):
    host    all             all             127.0.0.1/32            scram-sha-256
    host    all             all             ::1/128                 scram-sha-256
    
    若使用密码认证,可将scram-sha-256替换为md5;
  3. 重启Postgres服务生效:
    sudo systemctl restart postgresql
    

步骤3:本地客户端发起连接

保持SSH隧道的终端窗口处于运行状态,然后使用以下JDBC连接字符串:

jdbc:postgresql://127.0.0.1:8060/workgroup

输入你之前创建的有权限的用户名和密码即可完成连接。

额外注意事项

  • 无需开放VM的5432端口到公网:SSH隧道是通过已有的SSH连接转发流量,只要你能正常用gcloud compute ssh登录VM,隧道就能正常工作;
  • 若Postgres在VM内绑定的是内部IP而非localhost,需将隧道命令中的localhost替换为VM的内部IP,例如:-L 8060:10.0.0.2:5432(10.0.0.2为VM的内部IP)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:16:05