介绍
本篇文章给大家分享的是有关mysql中怎么修改所有的定义者,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> mysql中的定义者是什么,有什么作用? 强>
<>之前先授权一个:,grant all 提醒testdb。*,用& # 39;user1 # 39; @ # 39; % & # 39;, identified by & # 39; 000000 & # 39;, with grant 选择;,,,, 然后我们创建一个存储过程如下:之前> <>以前USE “testdb”;DROP procedure IF EXISTS “user_count”; DELIMITER $ $<>以前USE ‘testdb’$ $
CREATE 定义者=@ %的“根”,PROCEDURE “user_count”() ,LANGUAGE SQL  NOT DETERMINISTIC  CONTAINS SQL SQL 才能;SECURITY 调用程序 COMMENT 才能;& # 39;& # 39;,BEGIN select count(*),得到mysql.user; $ $结束 DELIMITER ;
用根帐号登陆:
mysql>, use testdb;
Database 改变 mysql>, call user_count ();
+ +, - - - - - - - - - - - |, count (*), |, + +, - - - - - - - - - - - |, 3, |, + +, - - - - - - - - - - - 1, row set 拷贝(0.00,秒) Query 好吧,,0,rows affected (0.00,秒) 可以正常查询出来。 我们再用user1进行登陆: mysql>, use testdb;
Database 改变 mysql>, call user_count (); ERROR 1142, (42000):, SELECT command denied 用user & # 39; user1 # 39; @ # 39; localhost # 39;, for table & # 39;用户# 39;
发现系统报错查询不到的了,这是因为我们在上述定义的SQL安全值为调用程序,存储过程执行过程中会以user1具有的权限来执行,其中调用到了mysql的库,而我们的user1帐户只有testdb库的使用权限,所以会返回失败。
<强>如果方便修改mysql中所有已经定义到的定义者? 强>
现在在mysql涉及的定义者有视图,触发器,函数,程序、事件。我们一个个作介绍。
<强> 1。修改功能,程序的定义者强>
更新mysql。proc设置定义者=& # 39;user@localhost& # 39;;——如果有限定库或其它可以加在上条件
<强> 4。修改触发器的定义者强>
刷新表与readlock
& lt; p align=發eft",字体大小:14 px;空白:正常;background - color: # ffffff;“=?“在 打开表
以上就是mysql中怎么修改所有的定义者,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。