所以我尝试将 sql 文件导入 rds (1G MEM, 1 CPU)。 sql文件好像1.4G
mysql -h xxxx.rds.amazonaws.com -u user -ppass --max-allowed-packet=33554432 db 它卡在: 实际的sql内容是: 还是没有运气。ERROR 1227 (42000) at line 374: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
/*!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
https://stackoverflow.com/questions/44015692/