一尘不染

从MySQL转储中删除DEFINER子句

mysql

我有一个数据库的MySQL转储。其中包含DEFINER子句,

"DEFINER=`root`@`localhost`"

即,这些DEFINER子句位于我的CREATE VIEW和CREATE PROCEDURE语句中。有没有办法从我的转储文件中删除这些DEFINER子句?


阅读 299

收藏
2020-05-17

共1个答案

一尘不染

我认为没有办法忽略将DEFINERs 添加到转储中。但是,有一些方法可以在创建转储文件后将其删除。

  1. 在文本编辑器中打开转储文件,并用DEFINER=root@localhost空字符串“” 替换所有出现的

  2. 使用以下命令编辑转储(或管道输出)perl

    perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
    
  3. 通过sed以下管道输出:

    mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql
    
2020-05-17