指定要与 gcloud sql 连接的数据库

Posted

技术标签:

【中文标题】指定要与 gcloud sql 连接的数据库【英文标题】:Specifying the DB to connect with gcloud sql 【发布时间】:2018-04-28 05:20:57 【问题描述】:

连接到 Google Cloud SQL 实例时,是否可以指定我要连接的数据库?

这是我执行的命令和我得到的错误:

$ gcloud beta sql connect MY_INSTANCE --user=MY_USER
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [MY_USER].Password for user MY_USER:
psql: FATAL:  database "MY_USER" does not exist

似乎尝试连接到与用户同名的数据库,但如果不是这样呢? (我不想创建一个名为 MY_USER 的虚拟数据库,只是为了能够跳转到我想要的数据库)。

这里是命令 gcloud beta sql 的文档,但我没有看到任何有用的信息:https://cloud.google.com/sdk/gcloud/reference/beta/sql/connect

【问题讨论】:

疯了,你在 3 年前就问过了……我今天才发现。这是一个超级奇怪的问题,考虑到gcloud sql connect --help 显示--database 参数,但它只是忽略它...... 【参考方案1】:

gcloud sql connect 目前不允许您指定数据库名称。有一个未解决的问题要添加它:https://issuetracker.google.com/issues/69314375

与此同时,您可以通过使用 PGDATABASE 环境变量来解决此问题:

例如

PGDATABASE=mydb gcloud sql connect myinstance

您可以创建一个 shell 别名来为您执行此操作。

【讨论】:

是否可以只从 bash 脚本执行 sql 语句?而不是获取交互式外壳? gcloud sql connect 现在接受一个 --database 标志,您可以在其中指明要连接的数据库。 gcloud sql connect --database 是合法语法,但从 307.0.0 开始,该选项被忽略。不过,这个解决方案(PGDATABASE env var)仍然有效。 (1) 有没有办法让它跳过密码提示? (2) 有没有办法让它执行脚本?【参考方案2】:

与此同时,gcloud sql connect 命令的 beta 版本增加了对 --database=<dbname> 标志的支持

整个命令:gcloud beta sql connect INSTANCE [--database=DATABASE, -d DATABASE] [--user=USER, -u USER] [GCLOUD_WIDE_FLAG …]

https://cloud.google.com/sdk/gcloud/reference/beta/sql/connect

【讨论】:

对我来说仍然失败。我尝试了展位“gcloud beta”和常规 gcloud。默认情况下期望用户和数据库应该具有相同的名称。 =( 迄今为止(2020 年 3 月)提到的标志 --databasegcloud beta (2019.05.17) 版本中按预期工作,但在常规 SDK (283.0.0) 中还没有。

以上是关于指定要与 gcloud sql 连接的数据库的主要内容,如果未能解决你的问题,请参考以下文章

gcloud app SQLSTATE[HY000] [2002] 连接超时

为 gcloud 构建提交指定 Dockerfile

为啥我的hibernate连接sql 2008 ,老是连接不上呢,求解

Gcloud 无法检测到网络连接

Gcloud Compute - 虚拟机不断终止

gcloud cli 无法创建项目 - 您指定的项目 ID 已被另一个项目使用