mysqldump без CREATE ALGORITHM и DEFINER

В моих резервных копиях и экспорте базы данных я получаю что-то вроде следующего:

/*!50001 DROP TABLE `vTime`*/;
/*!50001 DROP VIEW IF EXISTS `vTime`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`db_user`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `vTime` AS select ... */;
  1. Это вызывает проблемы при восстановлении, так как части «CREATE ALGORITHM» и «DEFINER» дают сбой при попытке восстановления. Есть ли способ заставить mysqldump просто сделать простое CREATE VIEW вместо этого?

  2. Бонусный вопрос: что означают части /*!50001?

EDIT: я должен добавить, что это ошибка, которую я получаю:

#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

РЕДАКТИРОВАНИЕ 2: похоже, что только часть /*!50013 DEFINER= не работает.


person Sarke    schedule 19.09.2014    source источник


Ответы (2)


Часть /*!50001 — это номер версии.

На этот вопрос уже был дан ответ здесь: флаги MySQL в дампах

Основная проблема удаления DEFINER лучше всего решается с помощью скрипта. Некоторые примеры уже онлайн:

https://dbperf.wordpress.com/2010/04/12/removing-definer-from-mysql-dump/

Удалить предложение DEFINER из дампов MySQL

person mba12    schedule 20.03.2015

Эта команда sed должна работать для удаления обоих этих пунктов из mysqldump -

sed -e 's|^/[*]!50001 CREATE ALGORITHM=UNDEFINED [*]/|/*!50001 CREATE */|' -e '/^[/][*]!50013 DEFINER=/d'

Где 50001 и 50013 — соответствующие версии, как уже упоминалось выше.

person techiegirl123    schedule 24.05.2021