从 MySQL 转储中删除 DEFINER 子句

2024-05-02

我有一个数据库的 MySQL 转储。其中有 DEFINER 子句,如下所示:

"DEFINER=`root`@`localhost`" 

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


我认为没有办法忽略添加DEFINER到垃圾场。但有一些方法可以在创建转储文件后删除它们。

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

  2. 使用编辑转储(或管道输出)perl: http://dbperf.wordpress.com/2010/04/12/removing-definer-from-mysql-dump/

    perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
    
  3. 通过管道输出sed: http://oksoft.blogspot.in/2008/10/mysqldump-backups-and-transfers.html

    mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MySQL 转储中删除 DEFINER 子句 的相关文章

随机推荐