所以我try 将sql文件导入rds(1G内存,1个CPU).sql文件类似于1.4G

mysql-hxxxx.rds.亚马逊.com-u user-ppass——允许的最 Big Data 包数=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_user在rds中不存在,所以我:

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相关问答推荐

SQL:CAST与窗口函数组合导致语法错误

可以优化这个带有重复WHERE子句的查询吗?

比较2个mysql json数据类型列

MySQL 关于 JSON 数组和子查询的问题

如何分解分组依据的数据?

SQL: Select TEXT 字段的子字符串比整个值快

sequelize 中最好的更新方法是什么

检索按键列值分组的最新日期 (MySql)

将sql查询转换为sequelize

MySQL UPDATE 锁会因为连续的 SHARE 锁而饿死吗?

如何在 SQL 的计算列中显示小数点后两位?

MySQL 工作台与 phpMyAdmin

通过数据库级​​别本身的查询反序列化

mysql 按日期 Select 总和组

如何通过一个查询批量更新 mysql 数据?

MAMP mysql 服务器无法启动.没有mysql进程正在运行

字符ي和ی以及波斯语的区别 - Mysql

如何从 MySQL Workbench 中的图表生成 SQL 脚本?

mysql中float(2,2)和float()的区别

ON UPDATE RESTRICT 有什么作用?