MySQL能否授予查看存储过程定义权限给用户

MySQL能否授予查看存储过程定义权限给用户在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA GRANT VIE

在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA

 

GRANT VIEW DEFINITION ON ProcedureName TO UserA; —用具体的存储过程名和账号替换

 

那么在MySQL中能否实现这个功能呢? 找了很多资料,没有看到有这方面的功能,官方文档没有涉及这样的权限,网上有个方法:可以通过授予用户查询mysql.proc这样的权限来间接实现这个功能

 

 

grant select on mysql.proc to usrname@”xxx.xxx.xxx.xxx”;

 

个人简单测试了一下,这样授权后,发现还是有一些其他问题。

 

mysql> show create procedure prc_insert;  --没有授权前报这个错误。

代码100分

代码100分ERROR 1305 (42000): PROCEDURE prc_insert does not exist

mysql> show create procedure prc_insertG; --授权后

代码100分*************************** 1. row ***************************

           Procedure: prc_insert

            sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `prc_insert`(in  cnt int)

begin

declare i int;

set i=1;

while i < cnt do

    insert into test(id, name) select i,  CONCAT("name",i) from dual;

    

    set i = i+1;

 

end while;

end

character_set_client: utf8

collation_connection: utf8_general_ci

  Database Collation: latin1_swedish_ci

1 row in set (0.00 sec)

 

ERROR: 

No query specified

 

问题1:这样授权后,你能看到所有数据库存储过程的定义(不仅仅是某个某个存储过程,或某个数据库的存储过程的定义), 这里就涉及一个权限放大的问题。例如,我本来打算只授予用户A查看存储过程PRC_A的定义权限,但是那样授权后,A能查看很多存储过程的定义,甚至还能查看一些没有访问权限数据库的存储过程的权限。严格意义上来说,这个授权是不合理,而且是有问题的。

 

问题2:MySQL 8.0开始抛弃了mysql.proc,而且从MySQL 8.0开始,如果你要用SHOW CREATE PROCEDURE或SHOW CREATE FUNCION的话,需要有什么权限呢?。

 

MySQL 8.0开始,存储过程存储在mysql.routines和mysql.parameters系统表中,但是这些表无法直接访问,只能访问INFORMATION_SCHEMA.ROUTINES。像MySQL 8.0之前那样授权行不通了,

 

 

Where are stored procedures stored?

 

Stored procedures are stored in the mysql.routines and mysql.parameters tables, which are part of the data dictionary. You cannot access these tables directly. Instead, query the INFORMATION_SCHEMA ROUTINES and PARAMETERS tables. See Section 25.29, “The INFORMATION_SCHEMA ROUTINES Table”, and Section 25.19, “The INFORMATION_SCHEMA PARAMETERS Table”.

You can also use SHOW CREATE FUNCTION to obtain information about stored functions, and SHOW CREATE PROCEDURE to obtain information about stored procedures. See Section 13.7.7.9, “SHOW CREATE PROCEDURE Statement”.

 

 

个人测试发现,授予alter routine后,就能查看存储过程的定义,但是这个授权也带来一个问题,授予权限的用户不仅可以查看存储过程定义,而且可以删除这个存储过程(这个也是一个问题)。这个当然,不清楚是否还有其它授权来实现。

 

mysql> grant alter routine on procedure MyDB.prc_2 TO test@"192.168%";

 

Query OK, 0 rows affected (0.08 sec)

 

 

 

mysql> 

 

总结:

   在MySQL5.7或之前版本,可以通过授予用户查询mysql.proc来间接实现查看存储过程定义的权限,在MySQL 8.0 可以通过授予用ALTER ROUTINE的权限来间接实现查看存储过程定义的权限,两者都有一个问题,那就是会放大权限,这个属于MySQL功能性的缺陷,短时间估计一直存在!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10974.html

(0)
上一篇 2022-12-18
下一篇 2022-12-18

相关推荐

  • mysql互换表中两列数据方法「建议收藏」

    mysql互换表中两列数据方法「建议收藏」1.创建表及记录用于测试 CREATE TABLE ( int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', varchar

    2023-01-25
    90
  • Python中的__str__方法及其应用

    Python中的__str__方法及其应用在Python中,每个类都包含一些特殊方法,其中__str__便是其中一个。当我们调用print方法时,通常会输出该对象的一些信息。但是如果没有定义__str__方法,输出的信息不一定是我们需要的,这时就需要使用__str__特殊方法来自定义输出的格式。

    2024-02-24
    61
  • Python os.sep:如何更好地处理文件路径

    Python os.sep:如何更好地处理文件路径在Python中处理文件和文件夹路径是非常常见的操作,但由于不同操作系统的不同,使用正确的文件路径分隔符是无可厚非的。Python的os模块提供了os.sep参数来解决这个问题。本文将从多个方面介绍Python os.sep的使用方法。

    2023-12-31
    61
  • integer127与integer128的区别_数据库tinyint类型

    integer127与integer128的区别_数据库tinyint类型想要了解取值范围首先需要知道的是 bit 和 Byte 的概念 bit :位 二进制数系统中,位通常简写为 "b",也称为比特,每个二进制数字 0 或 1 就是一个位(bit)。位

    2023-04-22
    106
  • linux hbase安装_hbase安装与配置详解

    linux hbase安装_hbase安装与配置详解环境准备 System:CentOS release 6.10 (Final) JDK:jdk1.8.0_251 注意,不同版本的安装包需要相应的jdk版本支持 step1下载安装包: # wget…

    2023-03-07
    104
  • 一小时建立数据分析平台_大数据实时分析

    一小时建立数据分析平台_大数据实时分析实时数据分析门槛较高,我们如何用极少的开发工作就完成实时数据平台的搭建,做出炫酷的图表呢? 如何快速的搭建实时数据分析平台,首先我们需要实时数据的接入端,我们选择高扩展性、容错性、速度极快的消息系统K

    2023-02-22
    99
  • Mariadb之事务隔离级别 – Linux「终于解决」

    Mariadb之事务隔离级别 – Linux「终于解决」上一篇我们聊到了mariadb的锁,以及怎么手动加锁和解锁等等,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13196905.html;今天我们来聊一聊mar

    2023-03-16
    98
  • hw华为p40_华为旗舰手机

    hw华为p40_华为旗舰手机华为P40系列搭载HMS的应用好用吗?想买P40手机,但是不太懂手机这方面,有没有用过P40系列搭载HMS应用的?体验怎么样?有没有什么比较亮点的功能?另外华为应用市场安全不,我之前用的手机在市场下…

    2023-03-06
    105

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注