
Мне нужно было восстановить базу данных MySQL из файла SQL в хранилище GCP. Для этого я загрузил файл резервной копии базы данных в хранилище GCP, затем импортировал этот файл SQL в указанную базу данных в экземпляре GCP MySQL. Это заняло некоторое время, возникло исключение, которое было
Import error: exit status 1 ERROR 1227 (42000) at line 10871: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
затем я попытался предоставить супер привилегии пользователю root или любому другому пользователю, но это все равно не сработало, хотя мне не разрешили предоставить супер привилегии, я понятия не имею, как решить эту проблему, любая помощь была бы очень признательна
Обновление (17 января 2020 г.): проблема, которую я решил
Я пытался найти строку, в которой произошло исключение
$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p пример.sql
и я нашел
/*!50013 ОПРЕДЕЛИТЕЛЬ= root
@ localhost
ОПРЕДЕЛИТЕЛЬ БЕЗОПАСНОСТИ SQL */
затем я использовал эту команду, чтобы удалить оператор, в котором возникла проблема
cat пример.sql | sed -e 's/DEFINER= root
@ localhost
//g' > пример-ОЧИЩЕНО.sql
затем это сделано
решение1
Должны CURRENT_USER
быть SUPER
привилегии, но у текущего их DEFINER
нет. Снова сделайте дамп с помощью mysqldump --skip-definer
(это будет наименьшим усилием). Если это не вариант, отредактируйте дамп и либо удалите DEFINER
, либо замените все его вхождения на CURRENT_USER
. Определенные SET
операторы в дампе в конечном итоге также могут вызвать проблему.