Доступ закрыт; вам нужна (по крайней мере, одна из) привилегия SUPER для этой операции

Поэтому я пытаюсь импортировать sql файл в rds (1G MEM, 1 CPU). Файл sql похож на 1.4G

mysql -h xxxx.rds.amazonaws.com -u пользователь -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 [email protected]'localhost';

Еще не повезло.

Ответ 1

Либо удалите DEFINER=.. из вашего файла sqldump, либо замените значения пользователя CURRENT_USER.

Сервер MySQL, предоставляемый RDS, не позволяет синтаксис DEFINER для другого пользователя (по моему опыту).

Вы можете использовать sed скрипт, чтобы удалить их из файла:

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