mysql 非definer用户如何查看存储过程定义

当我们创建存储过程时,如果没有显示指定definer,则会默认当前用户为该sp的definer,如果没有相关授权,则其他用户是看不了这个sp的。

比如用户zhenxi1拥有如下权限:

它拥有对dev_nacos库的查询权限,这个时候我想查看该库下面的存储过程(这些存储过程的definer非zhenxi1),我使用如下语句查看表结构的定义

SHOW CREATE PROCEDURE x

你会发现Create Procedure字段的值是NULl。

那我们有什么办法可以让这个只读用户(zhenxi1)看到这个存储过程的定义吗?

在8.0版本之前,我们可以通过授予该用户对mysql.proc的select权限来达成目的。

grant select on mysql.proc to zhenxi1@'%';

To use either statement, you must be the user named in the routine DEFINER clause or have SELECT access to the mysql.proc table. If you do not have privileges for the routine itself, the value displayed for the Create Procedure or Create Function column is NULL.

引用:https://dev.mysql.com/doc/refman/5.7/en/show-create-procedure.html

8.0版本之后,去掉了mysql.proc,所以这种方法,不再有效,一种可替代的方案时,授予该账号对所有库的select权限。

grant select on *.* to zhenxi1@'%'

但是授予用户对所有库的select权限,范围太广了,所以mysql从8.0.20增加了show_routine权限,解决这个问题:

GRANT show_routine on *.* TO 'zhenxi1'@'%'

Prior to MySQL 8.0.20, for a user to access definitions of routines the user did not define, the user must have the global SELECT privilege, which is very broad. As of 8.0.20, SHOW_ROUTINE may be granted instead as a privilege with a more restricted scope that permits access to routine definitions. (That is, an administrator can rescind global SELECT from users that do not otherwise require it and grant SHOW_ROUTINE instead.) This enables an account to back up stored routines without requiring a broad privilege. 引用:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_show-routine

需要注意的是show_routine是一个global privilege,需要在全局授予,也即*.*,不能在库级别授予,否则,将会报如下错误:

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

在 MySQL 中,有些权限是可以在全局范围内授予的,而有些权限只能在数据库或表级别上授予。

总结

8.0版本之前,非definer用户查看存储过程定义,我们可以通过授予该用户对mysql.proc的select权限来达成目的。
此外,8.0.20之前,通过授予用户对所有库的select权限也可以实现。不够这个权限太大了。8.0.20之后,可以通过授予用户的show_routine权限来解决问题。

参考: https://dba.stackexchange.com/questions/184724/permissions-for-mysql-show-create-procedure
https://dev.mysql.com/doc/refman/5.7/en/show-create-procedure.html
https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html

图片

点个“赞 or 在看” 你最好看!

喜欢,就关注我吧!

图片

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/16583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xamarin.Android实现加载中的效果

目录 1、说明2、代码如下2.1 图1的代码2.1.1、创建一个Activity或者Fragment,如下:2.1.2、创建Layout2.1.3、如何使用 2.2 图2的代码 4、其他补充4.1 C#与Java中的匿名类4.2 、其他知识点 5、参考资料 1、说明 在实际使用过程中,常常会用到点…

【ChatGPT辅助学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流

文章目录 简介:一,变量1,变量的定义2,变量的可变性3,变量的隐藏 二、数据类型1,标量类型2,复合类型 三,运算符1,算术运算符2,比较运算符3,逻辑运算…

python_在K线找出波段_01_找出所有转折点

目录 写在前面: 需要考虑的几种K线图情况: 寻找所有转折点逻辑: 代码: 寻找转折点方法:找到第一个转折点就返回 循环寻找峰谷方法 主方法 调用计算: 返回: 在【PyQt5开发验证K线视觉想…

数字图像处理(番外)图像增强

图像增强 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。 图像对比度 图像对比度计算方式如下: C ∑ δ δ ( i , j …

7 网络通信(上)

文章目录 网络通信概述ip地址ip的作用ip地址的分类私有ip 掩码和广播地址 linux 命令(ping ifconfig)查看或配置网卡信息:ifconfig(widows 用ipconfig)测试远程主机连通性:ping路由查看 端口端口是怎样分配的知名端口动态端口 查看…

【数据结构与算法】基数排序

基数排序 基数排序(Radix Sort)属于“分配式排序”,又称“桶子法”或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。基数排序法是属于稳定性…

【C++】开源:Boost网络库Asio配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Asio网络库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…

信息安全战线左移!智能网联汽车安全亟需“治未病”

当汽车由典型的工业机械产品逐步发展成为全新的智能移动终端,汽车的安全边界发生了根本性改变,信息安全风险和挑战不断增加。 面对复杂的异构网络、异构系统及车规级特异性要求,智能智能网联汽车信息安全到底要如何防护,已经成为…

八大排序算法--选择排序(动图理解)

选择排序 算法思路 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 选择排序的步骤: 1>首先在未排序序列中找到最小(大)元素…

基于vue+uniapp微信小程序公司企业后勤服务(设备)系统

本系统分为用户和管理员两个角色,其中用户可以注册登陆系统,查看公司公告,查看设备,设备入库,查看通讯录,会议室预约,申请出入,申请请假等功能。管理员可以对员工信息,会…

从 0 到 1!得物如何打造通用大模型训练和推理平台

1.背景 近期,GPT 大模型的发布给自然语言处理(NLP)领域带来了令人震撼的体验。随着这一事件的发生,一系列开源大模型也迅速崛起。依据一些评估机构的评估,这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

matlab多线程,parfor循环进度,matlab互斥锁

一. 内容简介 matlab多线程,parfor循环进度,matlab互斥锁 二. 软件环境 2.1 matlab 2022b 2.2代码链接 https://gitee.com/JJW_1601897441/csdn 三.主要流程 3.1 matlab多线程 有好几种,最简单的,最好理解的就是parfor&am…

不可错过的家装服务预约小程序商城开发指南

在当今社会,家装行业发展迅速,越来越多的人开始寻求专业的家装预约和咨询服务。对于不懂技术的新手来说,创建一个自己的家装预约咨询平台可能听起来很困难,但实际上通过一些第三方制作平台和工具,这个过程可以变得简单…

复现YOLOv5改进最新MPDIoU:有效和准确的边界盒回归的损失,打败G/E/CIoU,效果明显!!!

MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression 论文简介MPDIoU核心设计思路论文方法实验部分加入YOLOv5代码论文地址:https://arxiv.org/pdf/2307.07662.pdf 论文简介 边界盒回归(Bounding box regression, BBR)广泛应用于目标检测和实例分割,是目标…

Django使用WebSocket

1、websocket 相关 实现一个系统,20 个用户同时打开网站,呈现出来一个群聊界面 解决方案 轮询:让浏览器每隔2s向后台发送一次请求,缺点:延迟,请求太多网站压力大 长轮询:客户端向服务端发送请…

Vue2 第九节 过滤器

(1)定义:对要显示的数据进行特定格式化后再显示 (2)语法: ① 注册过滤器 1)Vue.filter(name, callback) 全局过滤器 2) new Vue({filters:{}}) 局部过滤器 ② 使用过滤器 1&…

14. Spring AOP 的组成和实现

目录 1. Spring AOP 简介 2. AOP 的组成 2.1 切面(Aspect) 2.2 连接点(Join Point) 2.3 切点(Pointcut) 2.4 通知(Advice) 3. Spring AOP的实现 3.1 新建项目 3.2 添加 AOP …

Stable Doodle:Stability AI推出的一款零门槛AI绘画神器

Stable Doodle是由Stability AI推出的一款零门槛AI绘画神器,可以将简单的草图转化为精美的图像。它可以将随手的塗鴉草稿转化为高畫質的完成圖,让用户能够以更快的速度将想法转化为精美的艺术作品。Stable Doodle利用最新的Stable Diffusion模型&#xf…

C#实现读写CSV文件的方法详解

目录 CSV文件标准 文件示例RFC 4180简化标准读写CSV文件 使用CsvHelper使用自定义方法总结 项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件的解析。本文会介绍CsvHelper、TextFieldParser、正则表达式三种解析CSV文件的方法,顺带也会介绍一…

框架的知识点整理

目录 1、什么是Spring框架?Spring框架有哪些主要模块? 2 、 使用Spring框架有什么好处? 3、Spring MVC 工作原理 1、什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个开源的轻量级的Java应用程序开…