如何从 MySQL 转储中删除 DEFINER 子句?

Susan Sarandon
发布: 2024-10-27 07:11:29
原创
725 人浏览过

How to Remove DEFINER Clauses from MySQL Dumps?

从 MySQL 转储中删除 DEFINER 子句

MySQL 转储通常在 CREATE VIEW 和 CREATE PROCEDURE 语句中包含 DEFINER 子句,例如“DEFINER=root” @localhost”。在某些情况下,这些条款可能是不可取的。本文探讨了从 MySQL 转储文件中删除这些子句的方法。

解决方案:

  1. 文本编辑器替换:

在文本编辑器中打开转储文件并执行全局搜索和替换。查找“DEFINER=@”的所有实例并将它们替换为空字符串。

  1. Perl 命令:

使用 Perl 使用以下命令编辑转储文件:

perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
登录后复制

这将从转储文件中删除所有 DEFINER 子句,并创建带有“.bak”扩展名的备份。

  1. Sed 管道:

通过 sed 管道输出 mysqldump 的输出以删除 DEFINER 子句:

mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql
登录后复制

此命令将创建一个名为“triggers_backup.sql”的新转储文件,并删除 DEFINER 子句。

以上是如何从 MySQL 转储中删除 DEFINER 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!