使用专用IP连接到Postgres

时间:2019-04-12 13:31:36

标签: google-cloud-platform google-cloud-sql

在创建我的Postgres Cloud SQL实例时,我指定了要使用私有IP 连接到它,并选择了我的default网络。

我的VM位于相同的default网络中。

现在,我按照此处https://cloud.google.com/sql/docs/postgres/connect-compute-engine中的说明进行操作 并尝试执行

psql -h [CLOUD_SQL_PRIVATE_IP_ADDR] -U postgres

从我的VM中获取,但出现此错误:

  

psql:无法连接到服务器:连接超时是服务器   在主机“ CLOUD_SQL_PRIVATE_IP_ADDR”上运行并接受TCP / IP连接   端口5432?

我在寻找什么吗?

P.S。我的服务网络API (无论启用了什么)。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

  1. 打开ssh窗口(计算机引擎中的VM实例,然后单击ssh),然后使用以下命令下载代理文件:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
  1. 在ssh shell中执行
chmod +x cloud_sql_proxy 
  1. 使用角色Cloud SQL Client创建服务帐户并创建api密钥。在您的本地计算机上下载json密钥。

  2. 在ssh vm shell中,单击滚轮并“上传”,然后上传密钥文件

  3. 5,
./cloud_sql_proxy -instances=<Instance connection name>=tcp:5432 -credential_file=<name of the json file>

在“ SQL概述->连接到该实例”中可以找到“实例连接名称”

  1. 最后
psql "host=127.0.0.1 port=5432 sslmode=disable user=<your-user-name> dbname=<your-db-name>"

另一方面,如果要从本地计算机连接到cloud sql,并且cloud sql实例没有公共ip,则必须通过堡垒主机配置进行连接。

https://cloud.google.com/solutions/connecting-securely