【发布时间】:2015-05-02 13:37:40
【问题描述】:
我是谷歌应用引擎的新手,请帮我解决我的问题
当我导入 SQL 文件时,我在谷歌云 sql 中创建了一个实例,然后它显示这样的错误。
第 1088 行的错误 1227 (42000):访问被拒绝;您需要(至少一个)超级权限才能执行此操作
如何为我的实例添加超级权限。
【问题讨论】:
-
你搜索过错误吗?
标签: google-app-engine google-cloud-sql
我是谷歌应用引擎的新手,请帮我解决我的问题
当我导入 SQL 文件时,我在谷歌云 sql 中创建了一个实例,然后它显示这样的错误。
第 1088 行的错误 1227 (42000):访问被拒绝;您需要(至少一个)超级权限才能执行此操作
如何为我的实例添加超级权限。
【问题讨论】:
标签: google-app-engine google-cloud-sql
【讨论】:
我也遇到了同样的问题。但问题出在转储的 sql 数据库中。导出数据库时使用这些标志
--hex-blob --skip-triggers --set-gtid-purged=OFF
这里是如何做到这一点的完整文档 (https://cloud.google.com/sql/docs/mysql/import-export/importing)。数据导出后,可以使用命令行、gcloud shell 或gcloud sql 中的import 选项导入。
我使用了gcloud sql 控制台的import 功能,它对我有用。
【讨论】:
--column-statistics=0
在将 gzipped 转储(使用 mysqldump 从 5.1 版本的 MySQL 采购)反向移植到 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 权限,这在 Google Cloud SQL 中不可用,才能运行DEFINER。
另一个参考:Access denied; you need (at least one of) the SUPER privilege(s) for this operation
祝你好运!
【讨论】:
我遇到了同样的问题,您可以尝试向用户授予“超级权限”,但在 GCP 云 SQL 中不可用。
声明
DEFINER=
username@`%
是您的备份转储中的一个问题。
您可以解决的解决方案是从 sql 转储文件中删除所有条目并从 GCP 控制台导入数据。
cat DUMP_FILE_NAME.sql | sed -e 's/DEFINER=
<username>@%//g' > NEW-CLEANED-DUMP.sql
从转储中删除条目并成功完成后,您可以尝试重新导入。
【讨论】:
对于在数据库之间复制的用例在同一实例中,似乎唯一的方法是使用mysqldump,您必须传递一些特殊标志才能使其在没有超级特权。这就是我从一个数据库复制到另一个数据库的方式:
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 了解更多信息。
【讨论】:
这是关于数据的导出。当您从控制台导出时,它会导出整个实例,而不仅仅是模式,这需要创建它的项目的 SUPER 权限。要将数据导出到另一个项目,只需通过在高级选项中定位模式来导出。如果遇到could not find storage or object,请将导出的架构保存到本地,然后上传到其他项目的存储中,然后从那里选择它。
【讨论】:
如果有人在 2018 年(至少 8 月)搜索此内容,解决方案是:
导入愉快。
【讨论】:
我通过创建一个新数据库并在 SQL 实例中解决了这个问题。 (默认数据库是 sys 用于 mysql)。
步骤(非cli版本):
1) 在 GCP > SQL > Databases 中,创建一个新数据库,例如 newdb
2)在你的sql脚本中,添加:Use newdb;
希望对某人有所帮助
【讨论】:
SUPER privilege is exclusively reserved for GCP
对于您的问题,您需要将数据导入您拥有权限的数据库中..
【讨论】: