开发者社区> 问答> 正文

Access denied; you need (at least one of) the SUPE

在用
SET GLOBAL event_scheduler = 1
开启定时任务时,显示
Access denied; you need (at least one of) the SUPER privilege(s) for this operation
怎么获得超级特权呢?

展开
收起
jgzsyb 2018-09-10 11:56:39 4157 0
3 条回答
写回答
取消 提交回答
  • image.png

    2022-11-10 12:17:48
    赞同 展开评论 打赏
  • 郑州云淘科技有限公司 www.yuntaokeji.com QQ号码78315851

    错误原因

    • 导入RDS MySQL 实例:SQL 语句中含有需要 Supper 权限才可以执行的语句,而 RDS MySQL不提供 Super 权限,因此需要去除这类语句。
    • 本地 MySQL 实例没有启用 GTID。

    4. 解决

    4.1 去除 DEFINER 子句

    检查 SQL 文件,去除下面类似的子句

    DEFINER=`root`@`%` 

    在 Linux 平台下,可以尝试使用下面的语句去除:

    sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' your.sql > your_revised.sql

    4.2 去除 GTID_PURGED 子句

    检查 SQL 文件,去除下面类似的语句

    SET @@GLOBAL.GTID_PURGED='d0502171-3e23-11e4-9d65-d89d672af420:1-373,
    d5deee4e-3e23-11e4-9d65-d89d672a9530:1-616234';

    在 Linux 平台,可以使用下面的语句去除

    awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql

    4.3 检查修改后的文件

    修改完毕后,通过下面的语句检查是否合乎要求。

    egrep -in "definer|set @@" your_revised.sql

    如果上面的语句没有输出,说明 SQL 文件符合要求。

    2018-09-10 12:10:57
    赞同 展开评论 打赏
  • 使用accesskeys
    2018-09-10 12:02:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载