批量獲取mysql用戶權限的方法


-- 服務器級別的權限


select  a.GRANTEE,GROUP_CONCAT(a.PRIVILEGE_TYPE),
concat("grant ",GROUP_CONCAT(a.PRIVILEGE_TYPE)," ON  *.* to " ,a.GRANTEE  )
from   USER_PRIVILEGES a 
GROUP BY GRANTEE ;



-- db 級別的權限

select GRANTEE,TABLE_SCHEMA,GROUP_CONCAT(PRIVILEGE_TYPE),
concat("grant ",GROUP_CONCAT(PRIVILEGE_TYPE)," ON  ",TABLE_SCHEMA,".* to " ,GRANTEE  )
 from   information_schema.SCHEMA_PRIVILEGES
GROUP BY GRANTEE,TABLE_SCHEMA ;



-- 表級別的權限

select GRANTEE,TABLE_SCHEMA,table_name,GROUP_CONCAT(PRIVILEGE_TYPE),
concat("grant ",GROUP_CONCAT(PRIVILEGE_TYPE)," ON  ",TABLE_SCHEMA,".",table_name," to " ,GRANTEE  )
 from   information_schema.TABLE_PRIVILEGES
GROUP BY GRANTEE,TABLE_SCHEMA,table_name ;


-- 列級別權限

select GRANTEE,TABLE_SCHEMA,table_name,COLUMN_NAME,GROUP_CONCAT(PRIVILEGE_TYPE) from   information_schema.COLUMN_PRIVILEGES
GROUP BY GRANTEE,TABLE_SCHEMA,table_name,COLUMN_NAME ;



-- 獲取用戶權限和密碼(密文)

select  a.GRANTEE,GROUP_CONCAT(a.PRIVILEGE_TYPE),
concat("grant ",GROUP_CONCAT(a.PRIVILEGE_TYPE)," ON  *.* to " ,a.GRANTEE ," identified by password '",c.authentication_string,"';" ) privi
from   USER_PRIVILEGES a left  join  mysql.user c on a.GRANTEE = concat("'",c.user,"'","@","'",c.host,"'") 
GROUP BY GRANTEE ;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章