mysqldump没有"创建算法"和#34; DEFINER"

时间:2014-09-19 01:06:24

标签: mysql mysqldump database-backups

在我的数据库备份和导出中,我得到如下内容:

/*!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 ALAGORITH"和#34; DEFINER"尝试恢复时部件失败。有没有办法让mysqldump只做一个简单的CREATE VIEW

  2. 奖金问题:/*!50001部分是什么意思?

  3. 编辑:我应该补充一点,这是我得到的错误:

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

    编辑2:似乎只有/*!50013 DEFINER=部分失败。

2 个答案:

答案 0 :(得分:4)

/ *!50001部分是版本号。

这个问题已在这里得到解答:MySQL flags in dumps

删除DEFINER的主要问题最好用脚本完成。一些已在线的例子:

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

Remove DEFINER clause from MySQL Dumps

答案 1 :(得分:0)

这个 sed 命令应该可以从 mysqldump 中删除这两个子句 -

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

其中 50001 和 50013 分别是上面已经提到的版本。