中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中怎么修改所有的definer

發布時間:2021-08-13 11:24:13 來源:億速云 閱讀:160 作者:Leah 欄目:MySQL數據庫

本篇文章給大家分享的是有關mysql中怎么修改所有的definer,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

mysql中的definer是什么,有什么作用?

先授權一個: grant all on testdb.* to 'user1'@'%' identified by '000000' with grant option;    
然后我們創建一個存儲過程如下:
USE `testdb`;
DROP procedure IF EXISTS `user_count`;
DELIMITER $$
USE `testdb`$$
CREATE DEFINER=`root`@`%` PROCEDURE `user_count`()
 LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL
  SQL SECURITY INVOKER
  COMMENT '' BEGIN select count(*) from mysql.user; END$$
DELIMITER ;

用root帳號登陸:

mysql> use testdb;
Database changed
mysql> call user_count();
+----------+ | count(*) | +----------+ | 3 | +----------+ 1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
可以正常查詢出來。

我們再用user1進行登陸:

mysql> use testdb;
Database changed
mysql> call user_count();
ERROR 1142 (42000): SELECT command denied to user 'user1'@'localhost' for table 'user'

發現系統報錯查詢不到了,這是因為我們在上述定義的SQL SECURITY值為INVOKER,存儲過程執行過程中會以user1具有的權限來執行,其中調用到了mysql的庫,而我們的user1帳戶只有testdb庫的使用權限,所以會返回失敗。

如果方便修改mysql中所有已經定義到的definer?

現在在mysql涉及的definer有view、trigger、function、procedure、event。我們一個個作介紹。

1.修改function、procedure的definer

update mysql.proc set definer='user@localhost'; -- 如果有限定庫或其它可以加上where條件

4.修改trigger的definer

Flush tables with readlock

<p align="left"  font-size:14px;white-space:normal;background-color:#ffffff;"=""> Unlock tables

以上就是mysql中怎么修改所有的definer,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤山县| 宁海县| 余姚市| 疏附县| 丁青县| 焦作市| 伊川县| 湘潭县| 利川市| 青阳县| 曲沃县| 甘南县| 海晏县| 南平市| 两当县| 永川市| 仪征市| 弥勒县| 南昌市| 眉山市| 双辽市| 资兴市| 定西市| 山东省| 淮滨县| 泸定县| 南涧| 天镇县| 宁化县| 乐山市| 金阳县| 若尔盖县| 绥江县| 泸水县| 许昌县| 广昌县| 邳州市| 泽普县| 平乐县| 昆山市| 冕宁县|