小编典典

拒绝访问; 您需要(至少一个)超级权限才能执行此操作

all

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

mysql -h xxxx.rds.amazonaws.com -u 用户 -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 */;;

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

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

仍然没有运气。


阅读 68

收藏
2022-07-30

共1个答案

小编典典

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

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

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

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