阿里云RDS for MySQL权限问题

发布时间:2019-09-25 11:32:46

问题描述

在使用阿里云RDS创建存储过程、函数、触发器、事件、视图的时候出现如下错误。

从本地数据库导出SQL,在RDS上应用该SQL的时候出现如下错误。

从RDS for MySQL 5.6实例下载逻辑备份,导入到RDS或本地数据库中,出现如下错误,错误代码为1227和1725。

[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation --常见于RDS MySQL 5.6 

ERROR 1725 (HY000) at line 1936: OPERATION need to be executed set by ADMIN --常见于RDS MySQL 5.5

问题原因

1、导入RDS for MySQL实例时,SQL语句中含有需要Supper权限的用户才可以执行的SQL语句,而RDS for MySQL不提供Super权限,因此需要删除这类语句。

2、本地MySQL实例没有启用GTID。

解决方案

1、删除DEFINER语句。

检查SQL文件,删除类似如下SQL语句。

DEFINER=`root`@`%`

在Linux系统中,可以尝试使用如下命令删除。

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

2、删除GTID_PURGED语句。

提示:也可以导出的时候在mysqldump命令后添加参数“--set-gtid-purged=off“来取消输出GTID_PURGED子句。

检查SQL文件,删除类似如下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

本文只适用于

阿里云数据库 RDS MySQL 版

如果以上回复对您的问题还未能解决,请联系凯铧互联售后技术支持。阿里云代理商凯铧互联提供阿里云服务器/企业邮箱等产品的代购服务,同样的品质,更多贴心的服务,更实惠的价格。 阿里云代理商凯铧互联会为您提供一对一专业全面的技术服务,同时还能为您提供阿里云其他产品购买的专属折扣优惠。通过凯铧互联购买可以获得折上折优惠!若您需要帮助可以直接联系我方客服,阿里云代理商凯铧互联专业技术团队为您提供全面便捷专业的7x24技术服务。 电话专线:136-5130-9831,QQ:3398234753。
为什么选择我们:北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯服务器运维团队,团队90%的成员均是超过10年具备专业运维经验的精英。作为阿里云,腾讯云,百度云,金山云,华为云重要的合作伙伴,凯铧互联专注于为企业用户提供云计算及云服务器解决方案。公司总部设在北京,并在内蒙设有办事处,服务全国各地企业,与互联网专业公司及主流服务商建立了良好合作关系。
  凯铧互联始终坚持帮助企业节省成本、提高效率、创造价值的原则,力求为企业及创业型团队 提供可靠、安全、稳定的运维服务,与之共同成长。做为一家综合性方案商,为用户获得优质服务的同时,秉承"专业规划、周到服务"的服务理念,根据用户的实际情况,充分考虑各种网络资源的特点及功效,为用户量身定做一套适合于其实际应用需求的网络应用方案。帮助用户利用互联网的力量展开新的营销方式,并大大缩短了项目实施周期,获得用户的一致好评!