我尝试从 GCP 存储中的 sql 文件恢复 MySQL 数据库,步骤是将数据库备份文件上传到 GCP 存储,然后将此 sql 文件导入到 GCP MySQL 实例中的指定数据库,这花了一段时间,发生了异常,
Import error: exit status 1 ERROR 1227 (42000) at line 10871: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
然后我尝试授予 root 或任何其他用户超级权限,但无论如何它不起作用,它不允许我授予超级权限,我不知道如何解决这个问题,任何帮助都将不胜感激
更新(2020 年 1 月 17 日):我已解决的问题
我试图找到发生异常的那一行
$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p 示例.sql
我发现
/*!50013 定义者= root
@ localhost
SQL 安全定义者 */
然后我用这个命令删除了有问题的语句
cat example.sql | sed -e 's/DEFINER= root
@ localhost
//g' > example-CLEANED.sql
然后就完成了
答案1
应该CURRENT_USER
具有SUPER
权限,但当前DEFINER
没有。再次使用 转储它mysqldump --skip-definer
(这将是最省力的方法)。如果这不应该是一个选项,请编辑转储并删除DEFINER
,或将其所有出现替换为CURRENT_USER
。SET
转储中的某些语句最终也可能导致问题。