使用: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以外的任何用户都无法登录该实例。
先谢谢您。任何线索/帮助表示赞赏。
答案 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的方式研究解决方案。