iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何处理MySQL存储过程的权限问题
  • 970
分享到

如何处理MySQL存储过程的权限问题

2024-04-02 19:04:59 970人浏览 八月长安
摘要

这篇文章主要介绍如何处理Mysql存储过程的权限问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mysql的存储过程,没错,看起来好生僻的使

这篇文章主要介绍如何处理Mysql存储过程的权限问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

mysql的存储过程,没错,看起来好生僻的使用场景。问题源于一个开发同学提交了权限申请的工单,需要开通一些权限。

本来是一个很正常的操作,但在我来看是比较着急且紧迫的,说来惭愧,忙着方向规划和开发的事情,这个基础的操作功能竟然给忽略了,所以看到目前的一些实现方式,还是希望能够做一些细小的事情把这些重复性的工作给解放了。

当然我决定把一些基础性的工作接过来,一方面是给同事减压,另一方面是在做一个完整的体验,因为很多需求和痛点通过实践是能够很容易捕捉到重点的,如果我觉得不合理,那么这个过程中势必会有一些改进的地方。比如部署安装,比如权限开通。数据库的权限开通就是一个相对典型的案例,而存储过程的权限开通甚至都有点让人怀疑人生了。

问题的场景还是很基础的,开发同学需要开通一些基础的权限,在标记权限的时候声明需要增删改查的权限,还有DDL的权限,比如drop,alter,create等等。看到这里,我就感觉不太妥了,什么样的操作竟然需要这么大的权限呢。

简单声明了下立场,开发同学的想法是能够方便管理,于是乎我就直接招过去了,简单沟通下,其实发现他们的需求场景还是很常规的,他们需要动态创建一些日表,那么需要create权限在评估之后是可以给与的,而对于一般的用户而言,create的权限是不建议开放的,主要的出发点就是能够对sql进行一些基本的审核,哪怕是人工审核还是平台审核都是一个需要的过程。所以沟通了一圈发现,开通的权限就可以迅速裁剪,对他们而言,修改存储过程的逻辑也是需要的,因为在一些特定的场景下,他们对逻辑的控制希望能够更加灵活。

好了,基础的背景介绍完了。赋予基本的表的权限,赋予存储过程的权限,存储过程的这个地方需要注意一个重要的点是SQL SECURITY,默认创建是definer,如果需要开放给其他的用户调用,则建议是设置为invoker.

所以很简单的一句:

grant execute,alter procedure on xxx.xxx to xxx@'xxxx';

但是很不幸的,开发同学反馈,他们通过SQLyog或者是Navicator打开的时候,竟然看不到存储过程的内容。

因为我们没有select procedure或者view procedure的权限,所以我们几乎再无从干预了。

使用命令行的方式能够复现出这个问题:

如何处理MySQL存储过程的权限问题

没有存储过程的实质性内容。在那儿折腾了好一会,发现是个老问题了,10多年前的老问题了。

https://bugs.mysql.com/bug.PHP?id=20235

问题的解决其实很简单,就是需要这样一句:

grant select on mysql.proc to xxxx@'xxxx'即可

所以细粒度的权限控制就是这么纠结,但是确实有效。

比如我们举一反三一下,我们知道MySQL里的all privileges算是一个很大的权限,但是里面包含多少种权限,可能我们没有清晰的概念。

我们就完全可以通过细粒度的权限控制来反推。

比如创建一个用户,赋予all privileges的权限。

mysql> grant all privileges on test.* to 'jeanron'@'%' identified by 'jeanron100';

Query OK, 0 rows affected, 1 warning (0.00 sec)

包含的权限如下:

mysql> show grants for jeanron;

+---------------------------------------------------+

| Grants for jeanron@% |

+---------------------------------------------------+

| GRANT USAGE ON *.* TO 'jeanron'@'%' |

| GRANT ALL PRIVILEGES ON `test`.* TO 'jeanron'@'%' |

+---------------------------------------------------+

2 rows in set (0.00 sec)

我们做一下收缩。

mysql> revoke insert on test.* from jeanron@'%';

Query OK, 0 rows affected (0.00 sec)

喏,all privileges的权限就现出原形了。

mysql> show grants for jeanron;

| Grants for jeanron@%

+------------------------------------------------------------------------------------------------------

| GRANT USAGE ON *.* TO 'jeanron'@'%'

| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'jeanron'@'%' |

所以在上面的问题中,其实如果select on *.*其实已经包含了我们需要的细粒度权限mysql.proc,如果要抽丝剥茧,基本就是这样的套路。

以上是“如何处理MySQL存储过程的权限问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何处理MySQL存储过程的权限问题

本文链接: https://www.lsjlt.com/news/63173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何处理MySQL存储过程的权限问题
    这篇文章主要介绍如何处理MySQL存储过程的权限问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! MySQL的存储过程,没错,看起来好生僻的使...
    99+
    2024-04-02
  • MySQL存储过程的权限问题小结
    MySQL的存储过程,没错,看起来好生僻的使用场景。问题源于一个开发同学提交了权限申请的工单,需要开通一些权限。 本来是一个很正常的操作,但在我来看是比较着急且紧迫的,说来惭愧,忙着方向规划和开发的事情,这...
    99+
    2024-04-02
  • MYSQL存储过程权限问题的示例分析
    这篇文章主要介绍了MYSQL存储过程权限问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   MYSQL数据...
    99+
    2024-04-02
  • MySQL-存储过程权限报错
    存储过程建立者才拥有使用权,其他用户必须有以下权限才能使用 ``` GRANT SELECT ON `mysql`.`proc` TO 'wmsadmin'@'192.168.26.102' `...
    99+
    2024-04-02
  • MySQL存储过程中的sql_mode问题怎么处理
    这篇文章主要介绍MySQL存储过程中的sql_mode问题怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在my.cnf中设置了sql_mode='STRICT_TRA...
    99+
    2024-04-02
  • 如何解决mysql存储过程太慢的问题
    小编给大家分享一下如何解决mysql存储过程太慢的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql存储过程太慢的解决...
    99+
    2024-04-02
  • 如何解决java存储过程调用servlet的授权问题
    这篇文章给大家分享的是有关如何解决java存储过程调用servlet的授权问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。写了一个java存储过程,调用远端的servlet。在java程序和function均正...
    99+
    2023-06-03
  • 我们如何通过MySQL存储过程访问表?
    我们可以从 MySQL 存储过程访问一个或所有表。以下是一个示例,其中我们创建了一个存储过程,它将接受表的名称作为参数,并在调用它后,将生成包含表中所有详细信息的结果集。示例mysql> Delimiter // mysql> ...
    99+
    2023-10-22
  • 云服务器存储如何实现访问权限管理
    存储管理 云服务器存储管理可以通过以下步骤实现访问权限管理: (1)用户登录账户时,需要输入账户密码,并在登录成功后跳转到“我的数据”页面。 (2)在“我的数据”页面中,可以查看到存储在云服务器中的数据。用户可以通过更改某一块数据的名...
    99+
    2023-10-28
    如何实现 访问权限 服务器
  • 如何解决Linq存储过程返回问题
    这篇文章主要为大家展示了“如何解决Linq存储过程返回问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Linq存储过程返回问题”这篇文章吧。存储过程在我们编写程序中,往往需要一些存储过...
    99+
    2023-06-17
  • 如何理解MySQL的存储过程与光标
    今天就跟大家聊聊有关如何理解MySQL的存储过程与光标,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL的存储过程与光标一、存储过程T-sql...
    99+
    2024-04-02
  • 我们如何在 MySQL 存储过程中处理结果集?
    我们可以使用游标来处理存储过程中的结果集。基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行。为了演示 CURSOR 在 MySQL 存储过程中的使用,我们正在创建以下存储过程,该过程基于名为“student_info”的表的值,如...
    99+
    2023-10-22
  • mysql通过存储过程解决ERROR 1060 (42S21): Duplicate column的问题
    问题描述 实际的日常开发工作中,经常需要对现有表的结构作出变更,涉及到sql相关的操作,基本都通过初始化脚本来完成,如果初始化脚本运行失败或者遇到其他问题,可能导致sql部分执行,不分失败的问题,从而造成这个ERROR 1060 (42S2...
    99+
    2023-09-30
    mysql 数据库
  • MySQL如何执行存储过程
    MySQL执行存储过程的步骤如下: 创建存储过程:首先需要使用CREATE PROCEDURE语句创建存储过程,并定义参数、执行逻...
    99+
    2024-03-06
    MySQL
  • mysql如何删除存储过程
    这篇文章将为大家详细讲解有关mysql如何删除存储过程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。说明mysql中,使用DROP语句删除存储过程。存储过程内容的修改方法是通过删除原有存储过程,之后再以相...
    99+
    2023-06-20
  • mysql如何调用存储过程
    在MySQL中调用存储过程可以使用CALL语句。语法如下:```CALL procedure_name([parameter1, parameter2, ...]);```其中,procedure_name是存储过程的名称,parame...
    99+
    2023-08-11
    mysql
  • 如何退出MySQL存储过程?
    我们可以借助 LEAVE 命令退出 MySQL 存储过程。 以下是语法。 Leave yourLabelName; 下面是一个例子。在这里,我们正在创建一个新过程。 mysql> delimiter // mysql> CREATE ...
    99+
    2023-10-22
  • 云服务器存储如何实现访问权限
    1. 了解云服务器存储的访问权限 在云服务器存储中,访问权限是一个重要的概念。它决定了谁可以访问存储中的数据以及对数据的操作权限。云服务器存储通常提供了多种访问权限控制机制,以确保数据的安全性和隐私性。 2. 使用身份和访问管理(IAM)...
    99+
    2023-10-27
    如何实现 访问权限 服务器
  • mysql如何创建存储过程
    小编给大家分享一下mysql如何创建存储过程,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.创建存储过程p3 (先更改结束符 ...
    99+
    2024-04-02
  • Linux下的PHP和Apache:如何处理文件权限问题?
    在Linux下,PHP和Apache是非常常见的开发环境,但是在搭建和运行过程中,文件权限问题可能会成为一个麻烦。在本文中,我们将探讨如何在Linux下正确地处理文件权限问题,以确保PHP和Apache的安全运行。 确定Apache用户和...
    99+
    2023-06-30
    apache 文件 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作