J'essaye donc d'importer un fichier SQL en rds (1G MEM, 1 CPU). Le fichier SQL est comme 1.4G
mysql -h xxxx.rds.amazonaws.com -u utilisateur -ppass --max-allowed-packet = 33554432 db <db.sql
Il s'est coincé à:
ERROR 1227 (42000) at line 374: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
Le contenu actuel de SQL est:
/*!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
n'existe pas dans les répertoires, je fais donc:
GRANT ALL PRIVILEGES ON db.* TO another_user@'localhost';
Toujours pas de chance.
Supprimez l'instruction DEFINER=..
de votre fichier sqldump ou remplacez les valeurs utilisateur par CURRENT_USER
.
Le serveur MySQL fourni par RDS n'autorise pas la syntaxe DEFINER
à un autre utilisateur (d'après mon expérience).
Vous pouvez utiliser un script sed
pour les supprimer du fichier:
sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i oldfile.sql