Google云sql实例超级权限错误

时间:2015-03-02 08:54:39

标签: google-app-engine google-cloud-sql

我是谷歌应用引擎的新手,请帮我解决我的问题

我在导入SQL文件时在Google云sql中创建了一个实例,然后它显示我这样的错误。

  

ERROR 1227(42000)第1088行:拒绝访问;您需要(至少一个)此操作的SUPER权限

如何为我的实例添加超级权限。

9 个答案:

答案 0 :(得分:7)

the Cloud SQL documentation所述:

  

不支持SUPER权限。

您可以查看解释如何将数据导入Cloud SQL实例的this page

答案 1 :(得分:2)

对于在同一实例内的数据库之间进行复制的用例,似乎唯一的方法是使用mysqldump,您必须传递一些特殊的标志以便它没有SUPER特权的作品。这就是我从一个数据库复制到另一个数据库的方式:

DB_HOST=...  # set to 127.0.0.1 if using cloud-sql proxy
DB_USER=...
DB_PASSWORD=...
SOURCE_DB=...
DESTINATION_DB=...

mysqldump --hex-blob --skip-triggers --set-gtid-purged=OFF --column-statistics=0 -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $SOURCE_DB \
  | mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DESTINATION_DB

或者,如果您只想转储到本地文件并稍后再做其他事情:

mysqldump --hex-blob --skip-triggers --set-gtid-purged=OFF --column-statistics=0 -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $SOURCE_DB \
  > $SOURCE_DB.sql

有关更多信息,请参见https://cloud.google.com/sql/docs/mysql/import-export/exporting#export-mysqldump

答案 2 :(得分:1)

这是关于数据的导出。从控制台导出时,它会导出整个实例,而不仅仅是模式,这需要为创建它的项目提供SUPER权限。要将数据导出到另一个项目,只需通过在高级选项中定位架构来导出。如果您遇到could not find storage or object,请将导出的架构保存到本地,然后上传到其他项目的存储,然后从那里选择它。

答案 3 :(得分:0)

我也面临同样的问题。但问题出在转储的sql数据库中。导出数据库时使用这些标志

--hex-blob --skip-triggers --set-gtid-purged=OFF

以下是如何操作的完整文档(https://cloud.google.com/sql/docs/mysql/import-export/importing)。导出数据后,可以使用命令行gcloud shell导入数据,也可以在import中选择gcloud sql

我使用了import控制台的gcloud sql功能,它对我有用。

答案 4 :(得分:0)

如果有人在2018年(至少在八月)正在搜索此解决方案,则解决方案是:

  1. 创建一个数据库。您可以从UI进行操作,只需转到“数据库”菜单,然后单击“创建数据库”。
  2. 单击“导入”并选择sql_dump(以前保存在存储桶中)后,“显示高级选项”并选择Db(不是高级,是吗?!)。否则,默认是系统mysql,当然不能 支持导入。

进口愉快。

答案 5 :(得分:0)

当将gzip压缩的转储(从MySQL的5.1版本的mysqldump获取)反向移植到MySQL 5.6的Google Cloud SQL实例时,遇到了相同的错误。 sql文件中的以下语句是问题所在:

DEFINER=`username`@`%`

最适合我的解决方案是使用sed删除所有实例:

cat db-2018-08-30.sql |  sed -e 's/DEFINER=`username`@`%`//g' > db-2018-08-30-CLEANED.sql

删除后,反向端口已正确完成。显然需要SUPER特权才能运行DEFINER。谷歌云SQL中没有此特权。

另一个参考:Access denied; you need (at least one of) the SUPER privilege(s) for this operation

祝你好运!

答案 6 :(得分:0)

我遇到了同样的问题,您可以尝试向用户授予“超级权限”,但在GCP云SQL中不可用。

声明

  

DEFINER = username @`%

是备份转储中的问题。

您可以解决的解决方案是从sql dump文件中删除所有条目,并从GCP控制台导入数据。

  

猫| sed -e's / DEFINER = <username> @ % // g'>   NEW-CLEANED-DUMP.sql

从转储中删除条目并成功完成后,您可以尝试重新导入。

答案 7 :(得分:0)

我通过在SQL实例中创建一个新数据库解决了这一问题。 (对于mysql,默认数据库是sys)。

步骤(非cli版本):
1)在GCP> SQL>数据库中,创建一个新数据库,例如newdb
2)在您的sql脚本中,添加:Use newdb;

希望能帮助到某人

答案 8 :(得分:0)

SUPER privilege is exclusively reserved for GCP

对于您的问题,您需要将数据导入您拥有权限的数据库中。.