我是谷歌应用引擎的新手,请帮我解决我的问题
我在导入SQL文件时在Google云sql中创建了一个实例,然后它显示我这样的错误。
ERROR 1227(42000)第1088行:拒绝访问;您需要(至少一个)此操作的SUPER权限
如何为我的实例添加超级权限。
答案 0 :(得分:7)
答案 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年(至少在八月)正在搜索此解决方案,则解决方案是:
进口愉快。
答案 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
对于您的问题,您需要将数据导入您拥有权限的数据库中。.