mysql中怎么修改所有的定义者

  介绍

本篇文章给大家分享的是有关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中怎么修改所有的定义者,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

mysql中怎么修改所有的定义者