Google cloud platform 使用专用IP连接到Postgres

Google cloud platform 使用专用IP连接到Postgres,google-cloud-platform,google-cloud-sql,Google Cloud Platform,Google Cloud Sql,在创建我的Postgres Cloud SQL实例时,我指定了要使用专用IP连接到它的实例,并选择了我的defaultnetwork 我的虚拟机位于同一默认网络中 现在,我按照这里描述的说明进行操作 然后尝试执行 psql -h [CLOUD_SQL_PRIVATE_IP_ADDR] -U postgres 从我的虚拟机,但获取以下错误: psql:无法连接到服务器:服务器连接超时 在主机“CLOUD\u SQL\u PRIVATE\u IP\u ADDR”上运行并在上接受TCP/IP连接 5

在创建我的Postgres Cloud SQL实例时,我指定了要使用专用IP连接到它的实例,并选择了我的
default
network

我的虚拟机位于同一
默认
网络中

现在,我按照这里描述的说明进行操作 然后尝试执行

psql -h [CLOUD_SQL_PRIVATE_IP_ADDR] -U postgres
从我的虚拟机,但获取以下错误:

psql:无法连接到服务器:服务器连接超时 在主机“CLOUD\u SQL\u PRIVATE\u IP\u ADDR”上运行并在上接受TCP/IP连接 5432端口

我在找什么


另外,我的服务网络API(无论是什么)已启用。

根据本文档,您需要设置以下项目:

  • 您必须已为项目启用服务网络API。如果您使用的是共享VPC,则还需要为宿主项目启用此API
  • 启用API需要servicemanagement.services.bind IAM权限
  • 建立专用服务访问需要网络管理员IAM角色
  • 为网络建立专用服务访问后,您不需要网络管理员角色来配置实例以使用专用IP

如果您有ssh连接到同一网络中的VM,则可以使用云SQL代理连接到云SQL:

  • 打开ssh窗口(Computer engine中的VM实例并单击ssh),然后使用以下命令下载代理文件:
  • 在ssh shell中执行
  • 使用角色Cloud SQL Client创建服务帐户并创建api密钥。在本地计算机中下载json密钥

  • 在ssh-vm shell中,单击控制盘并“上载”,然后上载密钥文件

  • 5.
    /cloud\u sql\u proxy-instances==tcp:5432-credential\u文件=
    
    其中“实例连接名称”可以在SQL概述->连接到此实例中找到

  • 最后
  • psql“主机=127.0.0.1端口=5432 sslmode=disable user=dbname=”
    
    另一方面,如果要从本地计算机连接到云sql,并且云sql实例没有公共ip,则必须通过bastion主机配置进行连接


    您是使用云SQL创建Postgres还是只在您自己的实例中安装Postgres?@howie Cloud SQL根据,PostgreSQL实例和Google Compute Engine实例必须位于同一区域。你的GCE实例和你的PostgreSQL在同一地区吗?我也有同样的问题。我在自动设置中选中了云SQL“私有IP”框,它似乎成功创建了“私有服务网络”、IP范围分配、VPN对等以及其他一切,但我仍然无法连接到云SQL实例,无法从VM实例ping其私有IP等。我还检查了一下,以确保我可以通过公共IP连接到云SQL实例,只要我将它添加到云SQL中接受列表的VM的公共IP中,就可以正常工作。仍在挖掘,如果我弄明白了,将在这里更新。您是从Docker容器连接还是直接在VM实例上的操作系统中连接?
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
    chmod +x cloud_sql_proxy 
    
    ./cloud_sql_proxy -instances=<Instance connection name>=tcp:5432 -credential_file=<name of the json file>
    
    psql "host=127.0.0.1 port=5432 sslmode=disable user=<your-user-name> dbname=<your-db-name>"