mysql - 以非交互方式在命令行中执行 Google Cloud SQL 查询

标签 mysql bash google-cloud-sql non-interactive

<分区>

我正在编写脚本以使用 gcloud SDK 编排 Google Cloud SQL 实例。

SDK 有一个connect 命令,它需要一个用户名,但必须在提示时输入密码 - 即它不能作为参数传递。

成功验证后允许执行查询 - 流程如下所示:

$ gcloud sql connect instance-name --user=root
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [root].Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8054
Server version: 5.7.14-google-log (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> USE tablename;

我需要以非交互方式执行此操作。我试过:

gcloud sql connect instance-name --user=root && echo "password" && echo "USE tablename;"

但它只执行第一个命令。

如何在单个命令中连接、验证和运行查询?

更新:

根据@danlor 的评论链接到 this question ,我都试过了:

yes password | gcloud...

printf 'password\n' | gcloud...

但两者仍然提示输入密码。

最佳答案

它看起来不像是 gcloud sql connect 命令让您能够将 execute 标志传递给 MySQL 命令行实用程序。我建议使用 Cloud SQL proxy为此。您的脚本可能类似于以下内容:

./cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME> &
PID=$!
mysql -u root --password "YOUR-PASSWORD" -S /cloudsql/<INSTANCE_CONNECTION_NAME> --execute "USE tablename;"
kill $PID

关于mysql - 以非交互方式在命令行中执行 Google Cloud SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56126792/

相关文章:

python - SQL-获取最后5个整数

linux - !# :3? 是什么意思

bash - 如何使用 awk 或 bash 将输出保存到文件夹?

php - 尝试将 .sql 文件导入 Cloud SQL 时出错

php - PHP和MYSQL登录表单不起作用

mysql - 如何删除字符串开头的所有空格?

php - 在网页中放置数据库连接函数的位置

bash - 如何替换 bash 显示的错误消息

google-cloud-sql - Cloud Run 和 Cloud SQL 之间的连接(内部 IP)

google-cloud-platform - 在 Google Cloud Build 期间在 Google Cloud SQL 上运行 node.js 数据库迁移