Диагноз
При попытке сдампить базу MySQL получаем ошибкуmysqldump: Got error: 1449: The user specified as a definer ('user'@'x.x.x.x') does not exist when using LOCK TABLES
Причина - отсутсвует пользователь который прописан в хранимых процедурах/триггерах.
Похоже, что эта ошибка возникает, когда исходный/изначальный дамп MYSQL импортируется в сервер с ключем "force" (-f - который игнорирует ошибки), а потом его пытаются сохранить с этой машины.
Лечение
Вариант 1
Правим хранимую процедуру и дампим зановоuse mysql; select * from proc;
Вариант 2
1. Создаем пользователяGRANT ALL PRIVILEGES ON *.* TO 'misseduser@*' IDENTIFIED BY 'some_pass' WITH GRANT OPTION
2. Дампим базу
3. Правим в дампе куски с отсутсвующими пользователями на CURRENT_USER Ищем что-то типа
/*!50013 DEFINER=`missed user`@`some_host` SQL SECURITY DEFINER */
и
DEFINER=`some_user`@`some_host`
заменяется на
DEFINER=CURRENT_USER
По мотивам этой заметки.
Комментариев нет:
Отправить комментарий