使用: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/