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

时间:2019-03-13 01:05:00

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

使用:MySQL 5.7

我要实现的目标:

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

错误:

Cloud SQL返回此: ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

我尝试过的事情:

  • 不使用密码登录→始终询问密码,并且包括服务器本身在内的任何密码均无效。
  • 使用密码创建多个用户→出现相同的错误结果
  • 使用skip-grant-tables创建Cloud SQL实例,以便不需要修改表的权限→Cloud SQL不支持此标志

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

可能的解决方案:

如果我可以:mysql -u root使用没有密码的Cloud SQL,那么它应该能够做到这一点。看来除root以外的任何用户都无法登录该实例。

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

1 个答案:

答案 0 :(得分:0)

我认为最简单的解决方案是将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文件。另外,请确保在下面编辑DATABASE变量的名称以及相应的查询。

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的方式研究解决方案。