在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要。

业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码。以及统一的读权限,写权限。(这里没有对 host进行过多的限制。只赋给通用的192.168.% 。有兴趣的同学可以在存储过程加个参数,对host 控制)

delimiter //

set session sql_log_bin=OFF;

drop PROCEDURE IF EXISTS `usercrt` //

CREATE DEFINER=`root`@`localhost` PROCEDURE `usercrt`(dbname varchar(64),type int,username varchar(16))

COMMENT ‘创建用户 call usercrt(库名,1/0,‘‘) 1写 0读 。最后一个参数为手动指定用户名,没有指定则用户名默认为 库名_w/r‘

label:BEGIN

DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘;

DECLARE return_str varchar(255) DEFAULT ‘‘;

DECLARE n int DEFAULT 12;

DECLARE i INT DEFAULT 0;

DECLARE pri_dbgrant VARCHAR(500);

DECLARE pri_namepre VARCHAR(500);

DECLARE pri_dbname VARCHAR(500);

DECLARE check_user VARCHAR(500);

DECLARE grantsql VARCHAR(200);

DECLARE pri_username VARCHAR(500);

DECLARE pri_grant VARCHAR(500);

DECLARE notice_msg VARCHAR(500);

set notice_msg=‘ 账号 ‘;

WHILE i < n DO

SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));

SET i = i +1;

END WHILE;

IF dbname = ‘*‘ THEN

SET pri_dbgrant="*.*";

SET pri_namepre="alldb";

ELSE

select SCHEMA_NAME INTO pri_dbname FROM information_schema.SCHEMATA where SCHEMA_NAME=dbname and SCHEMA_NAME NOT IN ("information_schema","performance_schema","mysql","sys");

IF pri_dbname IS NOT NULL AND pri_dbname !=‘‘ THEN

SET pri_namepre=substring(pri_dbname,1,14);

SET pri_dbgrant=concat(pri_dbname,‘.*‘);

ELSE

select concat(‘库名错误且不能为系统库,请输入:‘,group_concat(SCHEMA_NAME)) FROM information_schema.SCHEMATA where SCHEMA_NAME NOT IN ("information_schema","performance_schema","mysql","sys");

leave label;

END IF ;

END IF;

IF TYPE = 0 THEN

SET pri_username=CONCAT(pri_namepre,‘_r‘);

set pri_grant="GRANT select on ";

set notice_msg=‘ 读账号 ‘;

ELSEIF TYPE = 1 THEN

SET pri_username=CONCAT(pri_namepre,‘_w‘);

set pri_grant="GRANT Show view,select,insert,update,delete on ";

set notice_msg=‘ 写账号 ‘;

ELSE

select "读写类型不正确 1 写 0 读";

leave label;

END IF;

IF username IS NOT NULL AND username !=‘‘ THEN

SET pri_username =username;

END IF;

select User INTO check_user from mysql.user where user=pri_username AND Host=‘192.168.%‘ ;

IF check_user IS NOT NULL AND check_user !=‘‘ THEN

SET return_str=‘‘;

set grantsql=concat(pri_grant,pri_dbgrant,‘ to ‘,pri_username,‘@"192.168.%"‘);

ELSE

set grantsql=concat(pri_grant,pri_dbgrant,‘ to ‘,pri_username,‘@"192.168.%" identified by ‘,"‘",return_str,"‘");

END IF ;

SELECT grantsql;

SET @gsql=grantsql;

PREPARE STMT FROM @gsql;

EXECUTE STMT;

DEALLOCATE PREPARE STMT;

IF return_str!=‘‘ THEN

set @crtsql="create table IF NOT EXISTS tmp_pwd(col varchar(100))";

PREPARE STMT2 FROM @crtsql;

EXECUTE STMT2;

DEALLOCATE PREPARE STMT2;

set @intsql=concat("insert into tmp_pwd(col) values(‘",return_str,"‘)");

PREPARE STMT3 FROM @intsql;

EXECUTE STMT3;

DEALLOCATE PREPARE STMT3;

END IF;

set @showsql=concat(‘ show grants for ‘,pri_username,‘@"192.168.%"‘);

PREPARE STMT4 FROM @showsql;

EXECUTE STMT4;

DEALLOCATE PREPARE STMT4;

SELECT CONCAT(‘数据库名 ‘,pri_dbname,notice_msg, pri_username,‘ 密码 ‘,return_str);

END //

delimiter ;

原文:https://www.cnblogs.com/vansky/p/8998824.html

MySQL业务账号需要哪些权限_MySQL 日常运维业务账号权限的控制相关推荐

  1. mysql dba工作笔记pdf_社区专家在线:Oracle数据库、MySQL、Db2 等数据库日常运维故障与性能调优在线答疑...

    数据库的重要性毋庸置疑,随着数据量日益增加,数据库的重要性更为凸显.DBA们作为数据库的日程运维管理人员,肩负着数据库运维的重要使命.一名合格的DBA,日常工作中需要掌握多项技能,包括数据库的故障诊断 ...

  2. Linux 系统日常运维九大技能和运维网络知识总结

    一.Linux 系统日常运维九大技能 1.安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXE+kickstart 可以参考如下链接内容 ...

  3. 数据中心存储日常运维【13】

    文章目录 管理员指南 管理员角色及权限 常用管理软件 维护项目总览 首次维保项目 每日和每周定期维护项目 例行维护 工具巡检 人工巡检 收集存储系统信息 日常管理 日常管理项目总览 上下电存储设备 管 ...

  4. Linux系统运维九大技能及知识总结,90%日常运维

    Linux 系统运维九大技能及知识总结,搞定 90% 日常运维 | 周末送资料 以下内容包括RedHat和CentOS运维工作中常用的几大技能,并总结了系统运维中网络方面的规划.操作及故障处理等知识. ...

  5. [10] Linux系统日常运维

    [10] Linux系统日常运维 10.1 使用w查看系统负载 [root@Temence ~]# w19:28:05 up 45 days, 9:20, 1 user, load average: ...

  6. 干货丨Ceph 日常运维常见难点及故障解决

    本文转自twt社区. [导读]Ceph 日常运维中有几类常见问题,社区日前组织Ceph领域专家进行了线上的答疑交流,对社区会员提出的部分典型问题进行了分享解答,以下是分享内容,希望能为大家提供答案和一 ...

  7. 业务上云后,云上运维势在必行

    随着云计算的发展,企业上云已经成为了一种必然趋势.企业上云的初衷是把复杂的IT基础设施交给云平台去管理,企业可以专注于业务与应用.从而降低企业IT运营成本,提高IT部门工作效率. 业务上云的优势 1. ...

  8. 【9.30】日常运维——rsync、系统日志

    [9.30]日常运维--rsync.系统日志 10.28 rsync 工具介绍 10.29/10.30 rsync 常用选项 10.31 rsync 通过ssh同步 10.32/10.33 rsync ...

  9. 0418第十五次课:日常运维-防火墙、定时任务、系统管理

    2019独角兽企业重金招聘Python工程师标准>>> 日常运维-防火墙.定时任务 一.iptables的备份及恢复 iptables 规则备份 防火墙规则只存在内存中,并没保存在文 ...

  10. hadoop日常运维

    hadoop日常运维 @(HADOOP)[hadoop] (一)备份namenode的元数据 namenode中的元数据非常重要,如丢失或者损坏,则整个系统无法使用.因此应该经常对元数据进行备份,最好 ...

最新文章

  1. 谁来养活中国人?他,用小麦增产千亿斤让中国成为粮食大国
  2. 12.Azure应用程序网关(下)
  3. xen tools代码结构
  4. java多线程提高性能写法
  5. 数据库SQL Server 2019安装向导的“功能选择”详细说明(微软官方资料)
  6. android设置列表id,学习Android绑定列表的时候提示:You must supply a resource ID for a TextView,有完整示例代码...
  7. 分治算法-02凸包问题
  8. Vue Cli 项目结构简述
  9. activiti7 和业务_华电集团电子商务平台非招标业务操作指南
  10. SpringBoot整合kafka案例
  11. oracle数据库 date函数,Oracle 函数(处置Date)
  12. 微软大中华区迎来10年来首位华人CEO;华为前高管出任云南白药CEO;港交所新行政总裁委任获批 | 高管变动...
  13. Android Camera processCaptureResult 分析
  14. Termux设置自启动
  15. 收集整理网络协议类型
  16. APP开发流程实例讲解-儒释道网络电台八天开发全程-百度云深度兼容测试并进一步优化排错
  17. 什么能吃,什么不能吃
  18. 计算机教师继续教育心得,教师继续教育学习心得体会范文(精选8篇)
  19. ubuntu 进入紧急救援模式
  20. linux系统编程之信号(signal)的使用方法案例

热门文章

  1. 用友NC V6.5 6.33 6.31 6.3 6.1 2019新个人所得税增强包税改升级补丁包
  2. sci计算机论文发表论文格式,SCI论文发表的格式以及字体的要求是什么?
  3. P4816 [USACO15DEC]High Card Low Card G 题解
  4. 禅道的测试模块(编写用例)
  5. D365几个功能开发思路
  6. 为什么我选择移民新西兰?
  7. 递归求平均数|理解|讲解| c语言
  8. ubuntu du/eog 命令
  9. java画哆啦A梦_java绘制哆啦A梦 超可爱
  10. FPGA工程师面试试题集锦41~50