MySQL业务账号需要哪些权限_MySQL 日常运维业务账号权限的控制
在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 日常运维业务账号权限的控制相关推荐
- mysql dba工作笔记pdf_社区专家在线:Oracle数据库、MySQL、Db2 等数据库日常运维故障与性能调优在线答疑...
数据库的重要性毋庸置疑,随着数据量日益增加,数据库的重要性更为凸显.DBA们作为数据库的日程运维管理人员,肩负着数据库运维的重要使命.一名合格的DBA,日常工作中需要掌握多项技能,包括数据库的故障诊断 ...
- Linux 系统日常运维九大技能和运维网络知识总结
一.Linux 系统日常运维九大技能 1.安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXE+kickstart 可以参考如下链接内容 ...
- 数据中心存储日常运维【13】
文章目录 管理员指南 管理员角色及权限 常用管理软件 维护项目总览 首次维保项目 每日和每周定期维护项目 例行维护 工具巡检 人工巡检 收集存储系统信息 日常管理 日常管理项目总览 上下电存储设备 管 ...
- Linux系统运维九大技能及知识总结,90%日常运维
Linux 系统运维九大技能及知识总结,搞定 90% 日常运维 | 周末送资料 以下内容包括RedHat和CentOS运维工作中常用的几大技能,并总结了系统运维中网络方面的规划.操作及故障处理等知识. ...
- [10] Linux系统日常运维
[10] Linux系统日常运维 10.1 使用w查看系统负载 [root@Temence ~]# w19:28:05 up 45 days, 9:20, 1 user, load average: ...
- 干货丨Ceph 日常运维常见难点及故障解决
本文转自twt社区. [导读]Ceph 日常运维中有几类常见问题,社区日前组织Ceph领域专家进行了线上的答疑交流,对社区会员提出的部分典型问题进行了分享解答,以下是分享内容,希望能为大家提供答案和一 ...
- 业务上云后,云上运维势在必行
随着云计算的发展,企业上云已经成为了一种必然趋势.企业上云的初衷是把复杂的IT基础设施交给云平台去管理,企业可以专注于业务与应用.从而降低企业IT运营成本,提高IT部门工作效率. 业务上云的优势 1. ...
- 【9.30】日常运维——rsync、系统日志
[9.30]日常运维--rsync.系统日志 10.28 rsync 工具介绍 10.29/10.30 rsync 常用选项 10.31 rsync 通过ssh同步 10.32/10.33 rsync ...
- 0418第十五次课:日常运维-防火墙、定时任务、系统管理
2019独角兽企业重金招聘Python工程师标准>>> 日常运维-防火墙.定时任务 一.iptables的备份及恢复 iptables 规则备份 防火墙规则只存在内存中,并没保存在文 ...
- hadoop日常运维
hadoop日常运维 @(HADOOP)[hadoop] (一)备份namenode的元数据 namenode中的元数据非常重要,如丢失或者损坏,则整个系统无法使用.因此应该经常对元数据进行备份,最好 ...
最新文章
- 谁来养活中国人?他,用小麦增产千亿斤让中国成为粮食大国
- 12.Azure应用程序网关(下)
- xen tools代码结构
- java多线程提高性能写法
- 数据库SQL Server 2019安装向导的“功能选择”详细说明(微软官方资料)
- android设置列表id,学习Android绑定列表的时候提示:You must supply a resource ID for a TextView,有完整示例代码...
- 分治算法-02凸包问题
- Vue Cli 项目结构简述
- activiti7 和业务_华电集团电子商务平台非招标业务操作指南
- SpringBoot整合kafka案例
- oracle数据库 date函数,Oracle 函数(处置Date)
- 微软大中华区迎来10年来首位华人CEO;华为前高管出任云南白药CEO;港交所新行政总裁委任获批 | 高管变动...
- Android Camera processCaptureResult 分析
- Termux设置自启动
- 收集整理网络协议类型
- APP开发流程实例讲解-儒释道网络电台八天开发全程-百度云深度兼容测试并进一步优化排错
- 什么能吃,什么不能吃
- 计算机教师继续教育心得,教师继续教育学习心得体会范文(精选8篇)
- ubuntu 进入紧急救援模式
- linux系统编程之信号(signal)的使用方法案例
热门文章
- 用友NC V6.5 6.33 6.31 6.3 6.1 2019新个人所得税增强包税改升级补丁包
- sci计算机论文发表论文格式,SCI论文发表的格式以及字体的要求是什么?
- P4816 [USACO15DEC]High Card Low Card G 题解
- 禅道的测试模块(编写用例)
- D365几个功能开发思路
- 为什么我选择移民新西兰?
- 递归求平均数|理解|讲解| c语言
- ubuntu du/eog 命令
- java画哆啦A梦_java绘制哆啦A梦 超可爱
- FPGA工程师面试试题集锦41~50