mysql如何修改所有的definer「终于解决」

mysql如何修改所有的definer「终于解决」https://www.cnblogs.com/zejin2008/p/4767531.html 如果方便修改mysql中所有已经定义到的definer? 由于前期在测试库上开发的缘故,我们经常定义…

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

(0)
上一篇 2023-04-14 09:30
下一篇 2023-04-14

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注