it-swarm.com.de

Zugriff abgelehnt; Sie benötigen mindestens eines der SUPER-Privilegien für diesen Vorgang

Also versuche ich, eine SQL-Datei in rds (1G MEM, 1 CPU) zu importieren. Die SQL-Datei ist wie 1.4G

mysql -h xxxx.rds.amazonaws.com -u user -ppass --max-allowed-packet = 33554432 db <db.sql

Es blieb stecken bei:

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

Der tatsächliche SQL-Inhalt ist:

/*!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 ist in rds nicht vorhanden, also mache ich:

GRANT ALL PRIVILEGES ON db.* TO [email protected]'localhost';

Immer noch kein Glück.

47
kenpeter

Entweder entfernen Sie das DEFINER=.. Anweisung aus Ihrer sqldump-Datei, oder ersetzen Sie die Benutzerwerte durch CURRENT_USER.

Der von RDS bereitgestellte MySQL-Server lässt (meiner Erfahrung nach) keine DEFINER -Syntax für einen anderen Benutzer zu.

Sie können ein sed Skript verwenden, um sie aus der Datei zu entfernen:

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