所以我尝试将sql文件导入rds (1G MEM, 1个CPU)。sql文件大约是1.4G

Mysql -h xx.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 */;;

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

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

还是不走运。


当前回答

*答案可能只适用于MacOS *

当尝试将.sql文件导入docker容器时,我遇到了错误消息:

拒绝访问;您需要(至少一个)SUPER特权 这个操作

然后,在尝试其他一些建议时,我在MacOS (osx)上收到了以下错误

sed: RE错误:非法字节序列

最后,该资源的以下命令解决了我的“访问被拒绝”问题。

LC_ALL=C sed -i old 's/\DEFINER\=`[^`]*`@`[^`]*`//g' fileName.sql

所以我可以导入到docker数据库:

docker exec -i dockerContainerName mysql -uuser -ppassword table < importFile.sql

希望这能有所帮助!:)

其他回答

如果它有帮助,当我试图在我的AWS MySQL RDS上恢复一个DB转储时,我得到了这个错误:

ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, 
SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

我不需要更改DEFINER或删除/注释行。我刚刚做了:

GRANT SESSION_VARIABLES_ADMIN ON *.* TO myuser@'myhost';
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO myuser@'myhost';

然后我就能还原了。

以上的方法对我来说都没用。我必须做到以下几点:

在mysqldump中使用以下标志: Mysqldump——databases <db1> <db2>——master-data=1——single-transaction——order- By-primary, force -r all。SQL -h<主机> -u<用户> -p<密码> 删除如下一行: 更改MASTER为MASTER_LOG_FILE='binlog..... 在我的文件中,这是第22行,所以我运行:sed -i '22d' all.sql 将数据导入RDS: Mysql -h<主机> -u<用户> -p<密码> $ source all.sql

我注释了*中所有以SET开头的行。SQL文件,它工作。

需要在服务器端设置“on”服务器参数“log_bin_trust_function_creators”。这一个你可以很容易地找到左侧刀片,如果它是蔚蓝玛丽亚db。

在我的情况下(试图执行一个SQL文件到AWS RDS),我的SQL语句的开头是这样的:

DROP VIEW IF EXISTS `something_view`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `something_view`...

我所要做的就是删除上面语句中的ALGORITHM=UNDEFINED DEFINER='root'@'%' SQL SECURITY DEFINER部分。

所以新的语句是这样的:

CREATE VIEW 'something_view' ...