152 votes

Accès refusé; vous avez besoin (au moins un) le SUPER privilège(s) pour cette opération

Donc, j'essaie d'importer des fichier sql dans rds (1G MEM, 1 CPU). Le fichier sql est comme 1.4 G

mysql -h xxxx.rds.amazonaws.com -u utilisateur -ppass --max-admis-paquet=33554432 db < db.sql

Il est resté coincé à:

ERROR 1227 (42000) at line 374: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

Le sql réel contenu 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'est pas existé dans rds, donc je fais:

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

Toujours pas de chance.

256voto

hjpotter92 Points 24797

Soit supprimer l' DEFINER=.. déclaration de votre sqldump fichier, ou de remplacer les valeurs de l'utilisateur avec CURRENT_USER.

Le serveur MySQL fourni par RDS ne permet pas à l' DEFINER de la syntaxe pour un autre utilisateur (dans mon expérience).

Vous pouvez utiliser un sed script pour les supprimer du fichier:

sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i oldfile.sql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X