如何在MySQL的存储过程中书写批量的用户权限/授权语句

本文介绍了如何在MySQL存储过程中编写批量用户权限语句,以解决在日常开发和运维中为多个用户分配权限的繁琐工作。通过示例展示了在存储过程中处理动态SQL,实现根据输入的用户名和主机信息进行授权,并强调了使用动态SQL时的注意事项,如转义字符和预编译执行。最后提醒读者,存储过程在现代开发中应用较少,建议仅用于数据存储,避免逻辑处理。
摘要由CSDN通过智能技术生成

网上单独关于MySQL用户权限或者存储过程的文章有不少,但是关于在存储过程中如何书写用户授权语句,尤其是批量授权的资料却很少。

为什么笔者会遇到在存储过程中书写批量用户授权语句的需求,是因为笔者在日常开发中承担了一部分简单的运维职责(笔者还是很赞同开发兼运维的思想),其中就包括在公司内部机器中搭建MySQL服务。

搭建MySQL服务有一项内容就是配好用户和权限管理。笔者不是专职的数据库运维,在此就举个自认为还算形象的例子:比如MySQL中会有系统库(MySQL自带的,比如mysql、performance_schema等)、测试库和正式库,那么我们可能会划分出三类MySQL账号:(1)program账号:程序用的账号,能够对正式或测试库crud,对系统库的部分表有select权限;(2)query账号:开发者用的账号,对正式库或者测试库都只有select权限,对系统库的部分表有select权限。(3)alpha账号:开发者用的测试账号,对测试库有root权限(all privileges),对正式库只有select的权限,对系统库的部分表有select权限。

那么对于program、query和alpha账号(以及将来要增加的其他账号),都会有个共同的需求:指定系统库的部分表授予select权限。而这些表的数量不算少,如果每增加一个账号,就要把所有授权语句依照账号改一边再执行一遍,显得有点麻烦,不如写个存储过程,输入用户账号信息,然后就能把固定需要授予select的权限语句都执行一遍。

用户授权语句类似于:

GRANT SELECT ON `mysql`.`time_zone` TO 'query'@'%';

在存储过程中书写多个用户授权语句类似于:

DELIMITER //
CREATE PROCEDURE grantProc()
  BEGIN
    GRANT SELECT ON `performance_schema`.* TO 'query'@'%';
    GRANT SELECT ON `mysql`.`time_zone` TO 'query'&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值