我有一个数据库的MySQL转储。其中包含DEFINER子句,
"DEFINER=`root`@`localhost`"
即,这些DEFINER子句位于我的CREATE VIEW和CREATE PROCEDURE语句中。有没有办法从我的转储文件中删除这些DEFINER子句?
我认为没有办法忽略将DEFINERs 添加到转储中。但是,有一些方法可以在创建转储文件后将其删除。
DEFINER
在文本编辑器中打开转储文件,并用DEFINER=root@localhost空字符串“” 替换所有出现的
DEFINER=root@localhost
使用以下命令编辑转储(或管道输出)perl:
perl
perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
通过sed以下管道输出:
sed
mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql