だから私はSQLファイルをrds(1G MEM、1CPU)にインポートしようとします。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 */;;
another_user
rdsには存在しないので、私はそうします:
GRANT ALL PRIVILEGES ON db.* TO another_user@'localhost';
まだ運がない。
DEFINER
、ログインしたユーザーがSUPER
特権を持っていない場合(それ自体はRDSでは許可されていません)として別のユーザーを指定すると、任意の特権の昇格が許可されるためです-ストアドプログラムは、その資格情報と特権で実行されますDEFINER
(呼び出し元のユーザーのものとは対照的に-彼らのINVOKER
)、デフォルトで。また、サーバー障害時。