我刚接触Google应用引擎,请帮助我解决问题。
我已在Google云SQL中创建了一个实例,但当我导入SQL文件时出现以下错误。
ERROR 1227 (42000) 在第1088行: 拒绝访问; 您需要(至少之一)SUPER特权才能执行此操作
我该如何为我的实例添加超级权限。
我刚接触Google应用引擎,请帮助我解决问题。
我已在Google云SQL中创建了一个实例,但当我导入SQL文件时出现以下错误。
ERROR 1227 (42000) 在第1088行: 拒绝访问; 您需要(至少之一)SUPER特权才能执行此操作
我该如何为我的实例添加超级权限。
我也遇到了同样的问题。但问题出在转储的SQL数据库中。在导出数据库时,请使用以下标志。
--hex-blob --skip-triggers --set-gtid-purged=OFF
import
在gcloud sql
中进行导入。我使用了gcloud sql
控制台的import
功能,并且成功地完成了该操作。--column-statistics=0
。 - Matt Browne当我将一个由MySQL 5.1版本的mysqldump获取的gzipped dump回溯到Google Cloud SQL实例中的MySQL 5.6时,遇到了相同的错误。以下语句是sql文件中的问题:
DEFINER=`username`@`%`
sed
命令删除所有它的实例:cat db-2018-08-30.sql | sed -e 's/DEFINER=`username`@`%`//g' > db-2018-08-30-CLEANED.sql
移除后,回退没有错误。显然需要SUPER
权限才能运行DEFINER
,但是在Google Cloud SQL中不可用。
另一个参考文献:拒绝访问; 您需要(至少之一)超级权限来执行此操作
祝你好运!
我遇到了同样的问题,你可以尝试给用户授予“超级权限”,但在GCP Cloud SQL中不可用。
这个语句
DEFINER=
username
@`%
是备份转储中的一个问题。
你可以解决这个问题的方法是从sql dump文件中删除所有条目,然后从GCP控制台导入数据。
cat DUMP_FILE_NAME.sql | sed -e 's/DEFINER=
<username>
@%
//g' > NEW-CLEANED-DUMP.sql
从备份文件中删除条目并成功完成后,你可以尝试重新导入数据。
对于在同一个实例内在数据库之间进行复制的用例,似乎唯一的方法是使用 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
如果有人在2018年(至少8月)搜索此内容的话,解决方案如下:
祝您导入愉快。
我通过创建一个新的数据库和在SQL实例中解决了这个问题(MySQL的默认数据库是sys)。
步骤(非CLI版本):
1)在GCP> SQL>数据库中,创建一个新的数据库,例如newdb
2)在您的SQL脚本中添加:Use newdb;
希望能帮助到有需要的人。
SUPER privilege is exclusively reserved for GCP