日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/16 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 日常运维业务账号权限的控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。