[ERROR] Access denied; you need (at least one of) the SUPER privilege(s) for this operation
DMS在新增存储过程的时候出现这个。要怎么处理?数据库的帐号没问题,高权限和普通权限全试过。都一样的错误[ERROR] Access denied; you need (at least one of) the SUPER privilege(s) for this operation
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DMS中新增存储过程时出现Access denied; you need (at least one of) the SUPER privilege(s) for this operation
错误,通常是由于SQL语句中包含需要SUPER
权限的操作,而阿里云RDS MySQL不提供SUPER
权限。以下是详细的解决方案:
SQL语句中包含需要SUPER
权限的语句
例如,DEFINER
或GTID_PURGED
等语句需要SUPER
权限才能执行,而RDS MySQL实例默认不支持此类权限。
数据库账号权限不足
即使使用高权限账号,某些操作仍可能因RDS的权限限制而失败。
本地导出的SQL脚本未适配RDS环境
如果SQL脚本是从本地MySQL实例导出的,可能包含RDS不支持的语句。
DEFINER
相关语句DEFINER
语句通常用于定义存储过程、函数、触发器或视图的所有者。RDS MySQL不支持直接设置DEFINER
,因此需要删除这些语句。
手动删除
打开SQL脚本文件,查找并删除类似以下的语句:
DEFINER=`root`@`%`
自动删除(Linux系统)
使用以下命令批量删除DEFINER
语句:
sed -ie 's/DEFINER[ ]*=[ ]*[^ ]*/ / ' your.sql
GTID_PURGED
相关语句如果SQL脚本中包含GTID_PURGED
语句(通常出现在逻辑备份文件中),也需要删除。
手动删除
查找并删除类似以下的语句:
SET @@GLOBAL.GTID_PURGED='d0502171-3e23-11e4-9d65-d89d672af420:1-373, d5deee4e-3e23-11e4-9d65-d89d672a9530:1-616234';
自动删除(Linux系统)
使用以下命令批量删除GTID_PURGED
相关语句:
awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql
GTID_PURGED
如果从本地MySQL实例导出数据,可以在mysqldump
命令中添加--set-gtid-purged=off
参数,避免生成GTID_PURGED
语句:
mysqldump --set-gtid-purged=off -u username -p database_name > dump.sql
尽管您提到已尝试高权限账号,但仍需确认该账号是否具有足够的权限来创建存储过程。可以通过以下步骤验证:
登录数据库
使用高权限账号(如admin
)登录RDS MySQL实例。
检查当前账号权限
执行以下SQL语句,查看账号是否具有CREATE ROUTINE
权限:
SHOW GRANTS FOR CURRENT_USER;
授予必要权限
如果权限不足,可以为账号授予CREATE ROUTINE
权限:
GRANT CREATE ROUTINE ON *.* TO '<账号名>'@'%';
FLUSH PRIVILEGES;
RDS限制
阿里云RDS MySQL不支持SUPER
权限,因此无法执行需要该权限的操作。请确保SQL脚本中不包含此类语句。
重新导入修改后的SQL脚本
在完成上述修改后,重新导入SQL脚本并尝试创建存储过程。
联系技术支持
如果问题仍未解决,建议联系阿里云技术支持,提供具体的错误日志和SQL脚本以获取进一步帮助。
通过以上步骤,您可以有效解决Access denied; you need (at least one of) the SUPER privilege(s) for this operation
错误,并成功在DMS中新增存储过程。