数据库
首页 > 数据库> > mysql – 访问被拒绝;您需要(至少一个)此操作的SUPER权限

mysql – 访问被拒绝;您需要(至少一个)此操作的SUPER权限

作者:互联网

所以我尝试将sql文件导入rds(1G MEM,1个CPU). sql文件就像1.4G

mysql -h xxxx.rds.amazonaws.com -u user -ppass –max-allowed-packet = 33554432 db< db.sql 它陷入了困境:

ERROR 1227 (42000) at line 374: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

实际的sql内容是:

/*!50003 CREATE*/ /*!50017 DEFINER=`another_user`@`1.2.3.4`*/ /*!50003 TRIGGER `change_log_BINS` BEFORE INSERT ON `change_log` FOR EACH ROW
IF (NEW.created_at IS NULL OR NEW.created_at = '00-00-00 00:00:00' OR NEW.created_at = '') THEN
        SET NEW.created_at = NOW();
END IF */;;

rds中不存在another_user,所以我这样做:

GRANT ALL PRIVILEGES ON db.* TO another_user@'localhost';

仍然没有运气.

解决方法:

从sqldump文件中删除DEFINER = ..语句,或用CURRENT_USER替换用户值.

RDS提供的MySQL服务器不允许其他用户使用DEFINER语法(根据我的经验).

您可以使用sed脚本从文件中删除它们:

sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i oldfile.sql

标签:mysql,amazon-web-services,amazon-rds
来源: https://codeday.me/bug/20191003/1850898.html