指定要与 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 月)提到的标志--database
在 gcloud beta
(2019.05.17) 版本中按预期工作,但在常规 SDK (283.0.0) 中还没有。
以上是关于指定要与 gcloud sql 连接的数据库的主要内容,如果未能解决你的问题,请参考以下文章
gcloud app SQLSTATE[HY000] [2002] 连接超时