写这些脚本需求放缓的调查记录到数据库,方便观看。

1. 因为默认mysql.slow_log表使用csv数据引擎,该数据不支持指数,因此,有必要改变MyISAM发动机。和query_time字段索引,优化搜索效率。

2. 部的用户进行授权。让大家要可通过调用 pub_getSlowQuery( limit ) 存储过程获取一天的慢查记录数据。

3. 存储过程命名约定:priv_ 起头的为私有存储过程。不须要对用户授权,以pub_起头的存储过程对全部的会员进行授权。仅仅同意执行。不可改动和删除。

-- 改动慢查日志表结构,加入索引优化查寻速度
DROP PROCEDURE IF EXISTS `mysql`.`priv_setSlowLogEngine`;
DELIMITER $$
CREATE PROCEDURE `mysql`.`priv_setSlowLogEngine`() COMMENT '改动慢查设置'
BEGIN
/** 关闭慢查记录 */
SET GLOBAL slow_query_log=0;
/** 改动存储方式 */
SET GLOBAL log_output='TABLE';
/** 记录日志的运行时间 */
SET GLOBAL long_query_time=3;
/** 改动表引擎 */
ALTER TABLE `mysql`.`slow_log` ENGINE=MYISAM;
/** 加入索引 */
ALTER TABLE `mysql`.`slow_log` ADD INDEX `query_time`(`query_time`);
/** 开启慢查记录 */
SET GLOBAL slow_query_log=1;
END$$
DELIMITER ; -- 获取慢查寻句子列表
DROP PROCEDURE IF EXISTS `mysql`.`pub_getSlowQuery`;
DELIMITER $$
CREATE PROCEDURE `mysql`.`pub_getSlowQuery`(IN top INT) COMMENT '获取慢查记录'
BEGIN
/**
* 昨天凌晨一点的时间
* 业务需求是每天凌晨时间运行,所以是取昨天凌晨到当前时间的全部慢查日志 */
DECLARE yesterday DATETIME;
SELECT CONCAT_WS(' ', DATE_SUB(CURDATE(),INTERVAL 1 DAY), '00:00:00') INTO yesterday;
SET @sql=CONCAT("SELECT * FROM `mysql`.`slow_log` WHERE `query_time`>0 ORDER BY `query_time` DESC LIMIT 0",top);
/** 使用预处理运行SQL句子 */
PREPARE m FROM @sql;
EXECUTE m;
DEALLOCATE PREPARE m;
END$$
DELIMITER ; -- 授权操作
DROP PROCEDURE IF EXISTS `mysql`.`priv_grantToProcedure`;
DELIMITER $$
CREATE PROCEDURE `mysql`.`priv_grantToProcedure`( IN procedureName VARCHAR(30) ) COMMENT '对存储过程授权'
BEGIN
DECLARE not_found_data INT DEFAULT 0;
DECLARE userName VARCHAR(20) DEFAULT '';
DECLARE hostName VARCHAR(20) DEFAULT ''; /**
* 将用户列表读入游标 */
DECLARE users CURSOR FOR SELECT `user`,`host` FROM mysql.user WHERE `user`!='csc86';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found_data=1; OPEN users;
WHILE not_found_data=0 DO
FETCH users INTO userName,hostName;
SET @sql=CONCAT('GRANT Execute ON PROCEDURE `mysql`.`',procedureName,'` TO `',userName,'`@`',hostName,'`'); /** 使用预处理运行SQL句子 */
PREPARE m FROM @sql;
EXECUTE m;
DEALLOCATE PREPARE m;
END WHILE;
CLOSE users;
END$$
DELIMITER ; -- 将mysql库中以pub_开头的存储过程对全部用户授权
DROP PROCEDURE IF EXISTS `mysql`.`priv_setPrivileges`;
DELIMITER $$
CREATE PROCEDURE `mysql`.`priv_setPrivileges`() COMMENT '设置调用存储过程权限'
BEGIN
/**
* 游标 */
DECLARE not_found_data INT DEFAULT 0; /**
* 存储过程名称 */
DECLARE proc_name VARCHAR(30) DEFAULT ''; /**
* 读取全部公开的存储过程 */
DECLARE procedures CURSOR FOR SELECT `name` FROM `mysql`.`proc` WHERE `db`='mysql' AND `type`='PROCEDURE' AND `name` REGEXP '^pub_'; /**
* 到达游标尾部时,设置not_found_data为1 */
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found_data = 1; /**
* 打开游标进入循环 */
-- priv_grantToProcedure
OPEN procedures;
TRUNCATE TABLE mysql.`procs_priv`;
WHILE not_found_data=0 DO
FETCH procedures INTO proc_name;
CALL priv_grantToProcedure( proc_name );
END WHILE;
/** 关闭游标 */
CLOSE procedures; /** 刷新权限 */
FLUSH PRIVILEGES;
END$$
DELIMITER ;

版权声明:本文博客原创文章。博客,未经同意,不得转载。

MySQL存储过程:用户授权量的更多相关文章

  1. MYSQL存储过程实现用户登录

    MYSQL存储过程实现用户登录 CREATE DEFINER=`root`@`%` PROCEDURE `uc_session_login`( ), ) ) LANGUAGE SQL NOT DETE ...

  2. MySQL 授权用户 ; 存储过程的DEFINER; 命令分隔符DELIMITER

    最近项目中遇到有人使用DEFINER这样的关键字,找了半天没有怎么理解这个意思.以为是限制谁使用这个存储过程,后来测试发现并不是这样. 搜索网上发现很多说法都不正确.看到一篇博客,做了如下介绍,才有所 ...

  3. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  4. MySQL 存储过程

    MySQL 存储过程 存储过程是通过给定的语法格式编写自定义的数据库API,类似于给数据库编写可执行函数. 简介 存储过程是一组为了完成特定功能的SQL语句集合,是经过编译后存储在数据库中. 存储过程 ...

  5. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  6. MySql 存储过程、触发器和权限问题

    存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if  while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...

  7. mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

  8. mysql 操作用户权限

    使用可以对mysql数据库用户表有操作权限的用户名登陆mysqlinsert into user(Host,User,Password) values('%','name','password');如 ...

  9. Mysql存储过程调用

    mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下.   1.1create  p ...

  10. mysql存储过程详细教程

    记录mysql存储过程中的关键语法:DELIMITER //  声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int)  声明存储过程 ...

随机推荐

  1. openstack学习笔记一 虚拟机启动过程代码跟踪

    openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...

  2. 4句代码读取Excel到DataSet(非Excel组件)

    Toxy是继NPOI之后主推的还有一个项目,主要目的是为了解决文档的抽取问题.其支持的格式包括全部docx.xlsx.xls.csv.vcard等. 以下是一个简单但非常实用的样例 ParserCon ...

  3. Learning Cocos2d-x for WP8(2)——深入刨析Hello World

    原文:Learning Cocos2d-x for WP8(2)--深入刨析Hello World cocos2d-x框架 在兄弟篇Learning Cocos2d-x for XNA(1)——小窥c ...

  4. Windows下文件或文件夹不能删除时的解决办法

    windows在删除文件或文件夹时,提示文件或文件夹被占用而无法删除 解决办法:win7: winxp:需要借助第三方工具Unlocker.360.Process Explorer(这个是微软支持的) ...

  5. 源代码编译安装 PHP5.5.0,解决curl_exec訪问HTTPS返回502错误的问题

    近期碰到一个奇怪的问题. PHP使用 curl_exec 訪问 HTTPS 网页时, 返回502错误, 訪问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看. 支持op ...

  6. PowerDesigner 对 Oracle 作 逆向工程

    原文 PowerDesigner 对 Oracle 作 逆向工程 目的 PowerDesigner 15对OracleClient 11g进行逆向工程 环境 Win7 64位系统 Oracle 11g ...

  7. 简介支持向量机热门(认识SVM三位置)

    支持向量机通俗导论(理解SVM的三层境地) 作者:July .致谢:pluskid.白石.JerryLead.出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector ...

  8. ACM:回溯,八皇后问题,素数环

    (一)八皇后问题 (1)回溯 #include <iostream> #include <string> #define MAXN 100 using namespace st ...

  9. Ubuntu下轻松切换GDM, LightDM , KDM

    如果已经安装LightDM和GDM登录显示器.那么在Ubuntu下怎么在各种DM间任意切换呢? 举例: 以切换到GDM为例,打开终端,使用命令: sudo dpkg-reconfigure gdm 接 ...

  10. [思考] hdu 4811 Ball

    意甲冠军: 有三种颜色的小珠,每种颜色的量R,Y,B 转球进入桌面成序,有多少种不同的颜色分别砍下的球在球门前+有多少身后球不同的颜色 问:最大的总比分值 思考: 球和后面的球先放好.剩下的就放中间了 ...