当前位置: 首页 > 知识库问答 >
问题:

使用psql客户端连接到Postgres SQL实例(私有ip)

松嘉颖
2023-03-14

我在 CloudSQL Postgres 实例上使用 psql 客户端连接时遇到问题。我按照文档 https://cloud.google.com/sql/docs/postgres/connect-admin-proxy 进行操作。

我已启用云SQL管理API

wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy

我使用我的凭据SDK Cloud,他们拥有所有的权限,我已经设置了一个好的项目:

gcloud config set project gta-staging-280808

接下来,我启动了以下项目:

要使用TCP套接字进行测试:

./cloud_sql_proxy -instances=gta-staging-280808:europe-west1:${INSTANCE_ID}=tcp:5432
psql "host=127.0.0.1 sslmode=disable dbname=${DB_NAME} user=${USER}"

使用Unix套接字进行测试:

./cloud_sql_proxy -dir=/cloudsql &
psql "sslmode=disable host=/cloudsql/gta-staging-280808:europe-west1:${INSTANCE_ID} user={USER}"

结果:

2020/08/27 15:36:39 New connection for "gta-staging-280808:europe-west1:${INSTANCE_ID}"

2020/08/27 15:40:59 couldn't connect to "gta-staging-280808:europe-west1:${INSTANCE_ID}": dial tcp XX.XX.XX.XX:3307: connect: connection timed out

没有宋承宪。VPC是默认值。

为什么它不起作用?你知道吗?

共有1个答案

梁丘俊人
2023-03-14

这个错误可能是由许多原因引起的,最终它说客户端无法访问该实例。尽管如此,在这种情况下,我怀疑您正在尝试使用Cloud Shell的SQL代理连接到云SQL实例。

假设您使用的是Cloud Shell,如果实例具有公共IP,您所做的步骤将有效。即使您使用应该有权访问实例的帐户进行身份验证,代理也必须从访问与SQL实例相同的VPC网络的资源运行,Cloud Shell的情况并非如此。

同样,如果您有使用相同网络的实例,您可以从GCE访问SQL实例。查看本指南,尝试从GCE实例中进行连接,这本质上是相同的,但分配了一个IP地址范围。如果您想从Cloud Shell进行连接,您将需要使用公共IP,在这种情况下,您提供的指南将起作用。

我已经从Cloud Shell和GCE复制了这两个连接,以验证这个答案。

 类似资料:
  • 我正在运行社区OpenVPN服务器(在CIS级RHEL 7上)实例,我可以从我的笔记本电脑连接它,没有任何问题。在连接的同时,我可以使用私有IP SSH到OpenVPN服务器实例,但除此之外什么也做不了。甚至不是同一子网中的不同实例。假设我的VPN服务器在< code>10.100.0.0/28子网中,VPN客户端子网是:< code>192.168.10.0/24,并且我希望SSH到< code

  • 我想远程连接到一个Postgres实例。我知道我们可以使用psql命令传递主机名 我在这里做错了什么?

  • 问题内容: 有没有一种方法可以使用客户端(而不是Node.js)JavaScript直接连接到Redis? 我已经为一些项目成功使用了Node.js + PHP + Redis + Socket.io(用于客户端)。但是,我确实认为这可以进一步简化为类似PHP + Redis + Browser javascript的东西- 取出Node.js服务器,这是我不愿意使用的另一台服务器。对于简单的事情

  • 如何通过 JMX 客户端连接到 WebSphere JVM?是否可以使用 JMX 客户机连接到 WebSphere JVM 以更改日志记录设置?

  • 目前,由于以下问题,我在连接到服务器时遇到了问题: 当我试图连接到服务器时,它返回了一个错误: 通过WireShark进行更深入的分析,我发现客户机试图使用SSL v2连接到服务器,而服务器只能接受SSL V3,因此拒绝连接。

  • 所有的 我正在尝试连接到Oracle 19C数据库。我安装了两个Oracle客户端(11g和12c),因为我们需要支持遗留程序。我可以通过12c客户端与使用sqlplus的任何用户连接,没有问题。但是如果我与任何用户一起使用11g(11.2.0)客户端。我总是得到: 两个客户端都有完全相同的sqlnet。ora和tnsnames。ora文件,因此两个客户端都指向同一个数据库。 有什么想法吗?我是否