大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说mysql如何修改所有的definer「终于解决」,希望您对编程的造诣更进一步.
https://www.cnblogs.com/zejin2008/p/4767531.html
如果方便修改mysql中所有已经定义到的definer?
由于前期在测试库上开发的缘故,我们经常定义到的definer为`root`@`%`,后来搬移到生产库上又得改回来,存在着大量的更新,上百个的视图,函数等一个个改不免太麻烦并且也可能遗漏。如下为总结出的方便修改所有definer的方法,可以直到查漏补缺的作用。
现在在mysql涉及的definer有view、trigger、function、procedure、event。我们一个个作介绍。
1.修改function、procedure的definer
select definer from mysql.proc; — 函数、存储过程
update mysql.proc set definer=”user@localhost”; — 如果有限定库或其它可以加上where条件
2.修改event的definer
select DEFINER from mysql.EVENT; — 定时事件
update mysql.EVENT set definer=” user@localhost “;
3.修改view的definer
相比function的修改麻烦点:
select DEFINER from information_schema.VIEWS;
select concat(“alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER VIEW “,TABLE_SCHEMA,”.”,TABLE_NAME,” as “,VIEW_DEFINITION,”;”) from information_schema.VIEWS where DEFINER<>”user@localhost”;
查询出来的语句再执行一遍就好了。
4.修改trigger的definer
目前还没有具体方便的方法,可以借助工具端如HeidiSQL、sqlyog等来一个个修改。注意改前有必要锁表,因为如果改的过程中有其它表改变而触发,会造成数据不一致。
Flush tables with readlock
Unlock tables
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6261.html