91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

新郑市| 郓城县| 兰考县| 闸北区| 百色市| 延安市| 万荣县| 东辽县| 九江县| 望都县| 屏边| 麻江县| 文昌市| 贞丰县| 鹤峰县| 南充市| 芦溪县| 加查县| 滕州市| 吉隆县| 大丰市| 绥阳县| 策勒县| 长丰县| 长寿区| 石家庄市| 平原县| 潮州市| 沙湾县| 健康| 绥宁县| 百色市| 凤凰县| 阳朔县| 孟津县| 嵊泗县| 澜沧| 洞口县| 武义县| 连云港市| 辽阳市|