婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Mysql修改存儲過程相關權限問題

Mysql修改存儲過程相關權限問題

熱門標簽:沃克斯電梯外呼線路圖 房產智能外呼系統品牌 福州呼叫中心外呼系統哪家好 地圖標注被騙三百怎么辦 400電話鄭州申請 云南語音外呼系統平臺 北京人工外呼系統價錢 天智外呼系統 常州電銷外呼系統一般多少錢

在使用mysql數據庫經常都會遇到這么一個問題,其它用戶定義的存儲過程,現在使用另一個用戶卻無法修改或者刪除等;正常情況下存儲過程的定義者對它有修改、刪除的權限;但是其它的用戶就要相于的授權,不然無法查看、調用;

mysql 中使用用戶A創建一個存儲過程,現在想通過另一個用戶B來修改A創建的存儲過程;以下記錄就是基于這樣的情況產生的;

用戶A對OTO3庫的權限:

mysql> show grants for 'a'@'%';
+---------------------------------------------------+
| Grants for a@%               |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'a'@'%'        |
| GRANT ALL PRIVILEGES ON `OTO3`.* TO 'a'@'%' |
+---------------------------------------------------+
2 rows in set (0.00 sec)

用戶B的權限:

mysql> show grants for 'swper'@'%';
+----------------------------------------------------------------------+
| Grants for swper@%                          |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'swper'@'%'                  |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' |
+----------------------------------------------------------------------+
2 rows in set (0.00 sec)

以用戶B的身份登陸Mysql操作;

[root@mysql ~]# mysql -h10.0.10.110 -uswper -p123456

查存儲過程列表時就提示沒有權限了:

mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE';
ERROR 1142 (42000): SELECT command denied to user 'swper'@'mysql' for table 'proc'

以root身份給B用戶添加一個查看存儲過程的權限:

mysql> grant select on mysql.proc to 'swper'@'%';
Query OK, 0 rows affected (0.00 sec)
 
mysql> show grants for 'swper'@'%';
+----------------------------------------------------------------------+
| Grants for swper@%                          |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'swper'@'%'                  |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'swper'@'%'            |
+----------------------------------------------------------------------+
3 rows in set (0.00 sec)

再回到B用戶里查看存儲過程列表:

mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE';
+------------------------+
| name          |
+------------------------+
| proc_cs        |
+------------------------+
1 rows in set (0.00 sec)

此時發現多了一個mysql庫,但只有對mysql.proc有查詢權限:

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| OTO3        |
| mysql       |
+--------------------+
3 rows in set (0.00 sec)

mysql庫中只有一個表:proc

mysql> use mysql
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| proc      |
+-----------------+
1 row in set (0.00 sec)

同樣也可以看到存儲過程的詳細信息:

mysql> show create procedure proc_cs\G
*************************** 1. row ***************************
      Procedure: proc_cs
      sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  Create Procedure: CREATE DEFINER=`a`@`%` PROCEDURE `proc_cs`()
BEGIN

嘗試修改存儲過程的配置:

mysql> ALTER PROCEDURE proc_cs  MODIFIES SQL DATA SQL SECURITY INVOKER;
ERROR 1370 (42000): alter routine command denied to user 'b'@'%' for routine 'OTO3.proc_cs'

為了方便查看在Navicat工具上嘗試修改存儲過程,在保存的時候報如下權限問題:

1227 -Access denied;you need(at least one of)the SUPER privilege(s) for this operation

嘗試添加一個存儲過程,報權限信息:

1044 - Access denied for user ‘b'@'%' to database ‘OTO3'

這里表示b用戶沒有對OTO3有授權存儲過程的修改權限;

以B用戶嘗試調用一下存儲過程:

Procedure execution failed
1370 - execute command denied to user ‘b'@'%' for routine ‘OTO3.proc_cs'

這里很明顯連運行權限也沒有;

嘗試刪除原有的a用戶定義的存儲過程,也會報權限信息,如下:

1370 - alter routine command denied to user ‘b'@'%' for routine ‘OTO3.proc_cs'

可以看出B用戶連調用存儲過程的權限都沒有,這里先加入執行權限:

接下來添加一個執行存儲過程的權限:

mysql> grant execute on OTO3.* to 'b'@'%';
Query OK, 0 rows affected (0.00 sec)
 
mysql> show grants for 'b'@'%';
+-------------------------------------------------------------------------------+
| Grants for b@%                              |
+-------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'b'@'%'                       |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE ON `OTO3`.* TO 'b'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                 |
+-------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

再次執行一下存儲過程,發現成功了;

時間: 0.080ms
Procedure executed successfully
受影響的行: 0

那再添加一下創建添加存儲過程的權限:

mysql> grant CREATE ROUTINE on OTO3.* to 'b'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'b'@'%';
+-----------------------------------------------------------------------------------------------+
| Grants for b@%                                      |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'b'@'%'                              |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE ON `OTO3`.* TO 'b'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                         |
+-----------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

上面添加權限后就可以創建存儲過程了;

CREATE DEFINER=`b`@`%` PROCEDURE `aaaa`()
BEGIN
  #Routine body goes here...
SELECT * from mysql.user;
END

但是自己創建的都無法刪除;

1370 - alter routine command denied to user ‘b'@'%' for routine ‘OTO3.aaaa'

接下來再添加一個修改的權限,也可以刪除的哦;

mysql> grant alter ROUTINE on OTO3.* to 'b'@'%';
Query OK, 0 rows affected (0.01 sec)

查看用戶權限

mysql> show grants for 'b'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for b@%                                              |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'b'@'%'                                      |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                |
+--------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

上面添加完alter ROUTINE權限后就可以對OTO3所有的存儲過程有刪除權限[自己定義的增、刪、改],別人定義的可以刪除,但是還不能修改;修改別人定義的存儲過程會有如下提示:

1227 - Access denied; you need (at least one of)the SUPER privilege(s) for this operation

這里說明一下這個SUPER權限在哪里?通過查看用戶權限原來在這里:

mysql> select * from mysql.user where user='b'\G
*************************** 1. row ***************************
         Host: %
         User: b
      Select_priv: N
      Insert_priv: N
      Update_priv: N
      Delete_priv: N
      Create_priv: N
       Drop_priv: N
      Reload_priv: N
     Shutdown_priv: N
     Process_priv: N
       File_priv: N
      Grant_priv: N
    References_priv: N
      Index_priv: N
      Alter_priv: N
     Show_db_priv: N
      Super_priv: N
 Create_tmp_table_priv: N
   Lock_tables_priv: N
     Execute_priv: N
    Repl_slave_priv: N
   Repl_client_priv: N
   Create_view_priv: N
    Show_view_priv: N
  Create_routine_priv: N
  Alter_routine_priv: N
   Create_user_priv: N
      Event_priv: N
     Trigger_priv: N
Create_tablespace_priv: N
       ssl_type:
      ssl_cipher:
      x509_issuer:
     x509_subject:
     max_questions: 0
      max_updates: 0
    max_connections: 0
 max_user_connections: 0
        plugin: mysql_native_password
 authentication_string: *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175
   password_expired: N
 password_last_changed: 2017-03-06 11:37:35
   password_lifetime: NULL
    account_locked: N
1 row in set (0.00 sec)

嘗試添加一下這個SUPER權限看看:

mysql> grant SUPER on OTO3.* to 'b'@'%';
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
 
mysql> grant SUPER on *.* to 'b'@'%';
Query OK, 0 rows affected (0.00 sec)

不能對指定的庫執行這個權限,因為SUPER為全局的就是整個mysql的權限;

mysql> show grants for 'swper'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for swper@%                                              |
+--------------------------------------------------------------------------------------------------------------+
| GRANT SUPER ON *.* TO 'swper'@'%'                                      |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'swper'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'swper'@'%'                                |
+--------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

再次檢查時會發現 Super_priv: Y 變化了;再修改一下別人定義的存儲過程;

mysql> select * from mysql.user where user='b'\G

查看所有數據庫,發現mysql庫只有一張proc表有讀取的權限,SUPER并非我所想象中那么強大;

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| OTO3        |
| mysql       |
+--------------------+
3 rows in set (0.00 sec)

仔細觀看會發現執行語句:

mysql> select * from mysql.user where user='b'\G

可以看到有 Create_routine_priv: N和 Alter_routine_priv: N 這兩個明顯就是對存儲過程的權限嘛,能不能不用SUPER而使用這兩個權限呢?

回收一下這個SUPER權限;

mysql> revoke super on *.* from 'b'@'%';
Query OK, 0 rows affected (0.01 sec)

再添加Alter_routine_priv,Create_routine_priv

mysql> grant alter routine,create routine on *.* to 'b'@'%';
Query OK, 0 rows affected (0.00 sec)

查看用戶b權限

mysql> show grants for 'b'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for b@%                                              |
+--------------------------------------------------------------------------------------------------------------+
| GRANT CREATE ROUTINE, ALTER ROUTINE ON *.* TO 'b'@'%'                          |
| GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                |
+--------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

發現還是報相同的權限問題:

1227 - Access denied; you need (at least one of)the SUPER privilege(s) for this operation

執行上面權限后發現,可以看到其它的系統庫:[例如sys庫也有存儲過程,由于這兩個權限是全局的]

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| OTO3        |
| mysql       |
| performance_schema |
| sys        |
| test        |
+--------------------+
6 rows in set (0.00 sec)

這兩個權限更大,連系統庫sys中的存儲過程都能看到,甚至修改刪除,非常危險;決定再次回收權限

create routine,alter routine;
mysql> revoke create routine,alter routine on *.* from 'b'@'%';

還是使用SUPER權限比較安全;

通過上面的測試得出以下結論:

  • 查看存儲過程權限:SELECT #是對mysql.proc表的權限;
  • 執行存儲過程權限:EXECUTE #是對指定數據庫的權限;
  • 創建存儲過程權限:CREATE ROUTINE #是對指定數據庫的權限;
  • 修改存儲過程權限:ALTER ROUTINE #是對指定數據庫的中自己定義的存儲過程;
  • 修改別人定義的存儲過程權限:SUPER #是對全局整個mysql的權限;

簡來說用戶A在數據庫OTO3中定義了一個存儲過程,現在想用用戶B來執行、修改存儲過程,需要對用戶B添加以下權限:

GRANT SELECT ON MYSQL.PROC TO 'B';
GRANT EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'B';
GRANT SUPER ON *.* TO 'B';

所以用戶B的最基本的權限:

mysql> show grants for 'b'@'%';
+----------------------------------------------------------------------------------------+
| Grants for b@%                                   |
+----------------------------------------------------------------------------------------+
| GRANT SUPER ON *.* TO 'b'@'%'                           |
| GRANT SELECT, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
| GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                     |
+----------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

至此,對于Mysql中以另的用戶修改其它人定義的存儲過程權限也就非常的顯白了;

如果不是以另一個用戶身份調用存儲過程,可以使用root權限修改存儲過程的定義者; 這樣就等于linux里的所有者權限變更了;

update mysql.proc set DEFINER='b'@'%' WHERE NAME='proc_cs' AND db='OTO3';

到此這篇關于Mysql修改存儲過程相關權限問題的文章就介紹到這了,更多相關Mysql 存儲過程權限內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談MySQL user權限表
  • Mysql 用戶權限管理實現
  • 詳解MySQL 用戶權限管理
  • MySQL 權限控制細節分析
  • MySQL 權限控制詳解
  • mysql創建用戶并賦予用戶權限詳細操作教程
  • MySQL8.0設置遠程訪問權限的方法
  • MySQL之權限以及設計數據庫案例講解

標簽:鹽城 沈陽 拉薩 沈陽 移動 珠海 徐州 黔東

巨人網絡通訊聲明:本文標題《Mysql修改存儲過程相關權限問題》,本文關鍵詞  Mysql,修改,存儲,過程,相關,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql修改存儲過程相關權限問題》相關的同類信息!
  • 本頁收集關于Mysql修改存儲過程相關權限問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲三级视频在线观看| 色94色欧美sute亚洲13| 久久久国际精品| 色av一区二区| 亚洲午夜一区二区| 欧美韩国日本一区| 伊人夜夜躁av伊人久久| 日韩经典中文字幕一区| 日本精品裸体写真集在线观看| 欧美日韩一级片网站| 欧美一区二区三区免费视频| 丝瓜av网站精品一区二区| 国产成人免费视频网站| 成人网页在线观看| 欧美夫妻性生活| 欧美精品一级二级三级| 国产欧美精品国产国产专区 | 99久久99久久久精品齐齐| 97久久人人超碰| 91社区在线播放| 欧美情侣在线播放| 中文字幕二三区不卡| 首页欧美精品中文字幕| 久久电影网电视剧免费观看| 久久爱www久久做| 在线成人午夜影院| 亚洲天天做日日做天天谢日日欢 | 国产一区二区美女| 欧美日韩亚洲国产综合| 1区2区3区精品视频| 国产精品成人午夜| 亚洲视频一区在线观看| 亚洲一区在线观看网站| 99久久婷婷国产综合精品电影| 中文一区二区完整视频在线观看| 亚洲老妇xxxxxx| 亚洲男人的天堂在线观看| 亚洲欧美激情插| 国产精品亚洲视频| 欧美精品 日韩| 青青草国产成人99久久| 男男视频亚洲欧美| 99免费精品在线| 精品99一区二区| 中文字幕在线一区| 国产高清亚洲一区| 粉嫩绯色av一区二区在线观看| 日韩一级片在线观看| 欧美日韩在线三区| 久久久久88色偷偷免费| 久久国产综合精品| 亚洲电影一级黄| 色999日韩国产欧美一区二区| 亚洲欧美中日韩| 成人黄色在线看| 欧美一a一片一级一片| 最新中文字幕一区二区三区| 国产乱对白刺激视频不卡| 精品国产91亚洲一区二区三区婷婷| 日韩高清中文字幕一区| 亚洲美女淫视频| 国产69精品久久99不卡| 欧美日韩免费观看一区三区| 亚洲免费在线观看视频| 91成人在线精品| 久色婷婷小香蕉久久| 黄一区二区三区| 日韩久久久久久| kk眼镜猥琐国模调教系列一区二区| 国产精品久久久久aaaa樱花| 精品久久久久久久一区二区蜜臀| 国产剧情一区二区三区| 国产网站一区二区三区| 色综合中文字幕国产 | 91香蕉视频污在线| 久久精品国产色蜜蜜麻豆| 五月开心婷婷久久| 国产在线精品免费| 精品国产百合女同互慰| 久久先锋影音av鲁色资源网| 国产成人午夜片在线观看高清观看| 色噜噜狠狠色综合欧洲selulu| 亚洲国产人成综合网站| 中文字幕免费一区| 精品成人一区二区三区四区| 久久久久国产精品麻豆ai换脸| 欧美亚洲一区二区三区四区| 极品少妇xxxx精品少妇| 中文字幕av一区二区三区免费看 | 亚洲成人午夜影院| 亚洲欧美日韩国产另类专区| 欧美一二三四在线| 91精品国产综合久久精品图片| 日本伊人午夜精品| 91丝袜国产在线播放| 日本最新不卡在线| 欧美老女人在线| 成人网男人的天堂| 日韩一区国产二区欧美三区| 毛片基地黄久久久久久天堂| 一级精品视频在线观看宜春院| 精品久久久久久久久久久院品网 | 青青国产91久久久久久| 欧美一区二区精品| 99re热这里只有精品视频| 91视频一区二区三区| 最新久久zyz资源站| 精品国产一区二区三区av性色| 91精品国产综合久久精品性色| 欧美日韩一区二区三区免费看| 波多野结衣中文字幕一区| 亚洲精选在线视频| 午夜精品123| 亚洲乱码中文字幕| 一本久久a久久免费精品不卡| 欧美在线不卡一区| 欧美天堂一区二区三区| 国产白丝网站精品污在线入口| 国产成人亚洲综合色影视| 久久99最新地址| 水野朝阳av一区二区三区| www国产精品av| 国产欧美精品一区二区色综合 | 日韩在线a电影| 精品剧情在线观看| 欧美成人官网二区| 久久美女艺术照精彩视频福利播放| 精品国产乱子伦一区| 国产精品美女久久久久高潮| 亚洲男人电影天堂| 亚洲国产欧美日韩另类综合 | 国产美女精品在线| 成人av网站在线| 国产精品久久久久久久久免费桃花| 精品亚洲国产成人av制服丝袜 | 久久精品亚洲乱码伦伦中文 | 日韩一级在线观看| 国产精品久久一卡二卡| 色综合色综合色综合色综合色综合 | 欧美高清精品3d| 日韩在线一区二区| 日本成人在线电影网| 日韩欧美在线观看一区二区三区| 69av一区二区三区| 国产一区二区0| 成人的网站免费观看| 日韩欧美成人一区二区| 欧美一级一区二区| 奇米精品一区二区三区在线观看一| 波波电影院一区二区三区| 在线观看成人免费视频| 国产欧美视频在线观看| 日本亚洲最大的色成网站www| voyeur盗摄精品| 国内久久精品视频| 在线播放一区二区三区| 久久久久国产精品厨房| 色综合欧美在线视频区| 中文字幕一区二区三区在线播放| 国产一区二区三区在线看麻豆| 色综合一个色综合亚洲| 欧美视频中文字幕| 亚洲欧洲成人自拍| 欧美网站一区二区| 精品国产精品一区二区夜夜嗨| 亚洲一区二区三区四区在线观看| www.日韩在线| 欧美亚洲另类激情小说| 91精品黄色片免费大全| 欧美一区二区不卡视频| 亚洲欧美欧美一区二区三区| 日韩欧美你懂的| 久久精品视频在线看| 视频一区二区不卡| 成人18视频日本| 国产日韩精品视频一区| 国产一区欧美日韩| 国产欧美一区二区精品婷婷| 日韩激情av在线| 国产成人av一区二区三区在线| 2023国产精品视频| 国产在线精品一区二区夜色| 欧美成人精品1314www| 久久精品国产第一区二区三区| 精品国产三级a在线观看| 亚洲第一精品在线| 欧美探花视频资源| 免费成人在线视频观看| www日韩大片| 色综合视频在线观看| 激情文学综合插| 国产精品国产三级国产普通话99| 99这里都是精品| 欧美一区二区三区视频| 日韩电影在线免费观看| 精品国产伦一区二区三区观看方式| 国产激情视频一区二区三区欧美 | 国产精品一区二区免费不卡| 亚洲一区二区精品3399| 欧美日韩成人一区|