mysql - Google Cloud SQL 不允许我下载控制台输出。不允许输出权限,mysql -u root 不起作用

标签 mysql google-cloud-platform console google-cloud-sql google-cloud-shell

使用:MySQL 5.7

我想要实现的目标:

将 Cloud SQL 输出的控制台输出保存为文本。

错误:

Cloud SQL 返回以下内容: 错误 1045 (28000):用户“root”@'%' 的访问被拒绝(使用密码:YES)

我尝试过的事情:

  • 不使用密码登录 → 无论如何都会询问密码,任何密码(包括服务器本身的密码)都不起作用。
  • 使用密码创建各种用户→相同的错误结果
  • 使用 skip-grant-tables 创建 Cloud SQL 实例,以便无需任何权限即可修改表 →:Cloud SQL 不支持此标志

我尝试使用此选项手动标记数据库,但 Cloud Shell 甚至不支持无需密码的 root 登录。

可能的解决方案:

如果我可以:mysql -u root 使用 Cloud SQL 且无需密码,那么它应该能够很好地完成此操作。似乎除了 root 之外的任何用户都无法登录该实例。

提前谢谢您。任何线索/帮助表示赞赏。

最佳答案

我相信最简单的解决方案是使用 Google Cloud SDK 和以下 command .

您将以 CSV 格式将查询结果导出到 Google Cloud Storage 存储桶,并将它们从存储桶复制到您的系统。然后您必须解析 CSV 文件,这是标准过程。

有一个操作指南here您可以看一下下面的具体示例:

有一些将在多个命令中使用的变量

INSTANCE_ID=your_cloud_sql_instance_id
BUCKET=gs://your_bucket here

如果没有存储桶,请创建存储桶,并相应地选择位置

gsutil mb -l EU -p $DEVSHELL_PROJECT_ID $BUCKET

您可以阅读文档2中以下命令的解释,但底线最后将在您的文件系统上有一个 csv 文件。另请确保编辑下面的数据库变量的名称以及相应的查询。

gsutil acl ch -u `gcloud sql instances describe $INSTANCE_ID --format json | jq -c ".serviceAccountEmailAddress" | cut -d \" -f 2`:W $BUCKET

DATABASE=db_visit

FILENAME=$DATABASE'_'`date +%Y%m%d%H%M%Y`_query.csv

gcloud beta sql export csv $INSTANCE_ID $BUCKET/$FILENAME --database=$DATABASE --query="select * from visit"

gsutil cp $BUCKET/$FILENAME .

要通过 mysql 客户端自动登录并进行后续查询并获取其输出,我鼓励您研究类似 pexpect 的解决方案。 .

关于mysql - Google Cloud SQL 不允许我下载控制台输出。不允许输出权限,mysql -u root 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132880/

相关文章:

python - Google Cloud DataFlow 作业在几个小时后发出警报

google-app-engine - 有没有办法在google flexible appengine中自定义nginx代理

java - 为 System.in 设置环境

php - 在sql中选择多个对象并查看是否至少有1个具有不同的值?

mysql - 在 mysql 中,如果存在则在其他列之后添加该列

google-app-engine - 有没有办法通过 Google Datastore 事件触发 Google Cloud Function?

javascript - 是否可以从命令行运行 JavaScript 文件?

mysql - 从 MySQL 数据库获取表名,其中列名类似于 X 值等于 Y

mysql - 自动增量每次都会跳过一个数字

C# 按住键时写入文本