在创建我的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 (无论启用了什么)。
答案 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:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy
使用角色Cloud SQL Client创建服务帐户并创建api密钥。在您的本地计算机上下载json密钥。
在ssh vm shell中,单击滚轮并“上传”,然后上传密钥文件
./cloud_sql_proxy -instances=<Instance connection name>=tcp:5432 -credential_file=<name of the json file>
在“ SQL概述->连接到该实例”中可以找到“实例连接名称”
psql "host=127.0.0.1 port=5432 sslmode=disable user=<your-user-name> dbname=<your-db-name>"
另一方面,如果要从本地计算机连接到cloud sql,并且cloud sql实例没有公共ip,则必须通过堡垒主机配置进行连接。