Доступ закрыт; вам нужна (по крайней мере, одна из) привилегия 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