第1關(guān):授權(quán)
任務(wù)描述
本關(guān)任務(wù):系統(tǒng)用戶(hù) root 授權(quán) user1 用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù) teachingdb2 及其所有對(duì)象的權(quán)限
相關(guān)知識(shí)
為了完成本關(guān)任務(wù),你需要掌握 MySQL 的權(quán)限管理。
MySql系統(tǒng)庫(kù)中的權(quán)限表
MySql 系統(tǒng)庫(kù)中的權(quán)限表: user:最重要的權(quán)限表,存儲(chǔ)允許連接到服務(wù)器的賬號(hào)。 db:存儲(chǔ)用戶(hù)對(duì)某個(gè)數(shù)據(jù)庫(kù)的操作權(quán)限。 host:存儲(chǔ)某個(gè)主機(jī)對(duì)數(shù)據(jù)庫(kù)的操作權(quán)限。 tables_priv:對(duì)單個(gè)表進(jìn)行權(quán)限設(shè)置。 columns_priv:對(duì)單個(gè)數(shù)據(jù)列進(jìn)行權(quán)限設(shè)置。 columns_priv:對(duì)存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)進(jìn)行權(quán)限設(shè)置。
訪(fǎng)問(wèn)控制的兩個(gè)階段:
1、連接核實(shí)階段 用戶(hù)試圖連接 MySQL 服務(wù)器時(shí),服務(wù)器基于用戶(hù)提供的信息來(lái)驗(yàn)證用戶(hù)身份。使用 MySQL 的 user 表進(jìn)行身份核實(shí) 2、請(qǐng)求核實(shí)階段 對(duì)當(dāng)前用戶(hù)的每個(gè)操作都進(jìn)行權(quán)限檢查,判斷用戶(hù)是否有足夠的權(quán)限來(lái)執(zhí)行它。 如圖所示:
授予的權(quán)限等級(jí):
全局層級(jí):適用于一個(gè)給定服務(wù)器中所有的數(shù)據(jù)庫(kù)。 數(shù)據(jù)庫(kù)層級(jí):適用于一個(gè)給定數(shù)據(jù)庫(kù)中的所有目標(biāo)。 表層級(jí):適用于一個(gè)給定表中的所有列。 列層級(jí):適用于一個(gè)給定表中的單一列。 子程序?qū)蛹?jí):適用于存儲(chǔ)的子程序 ,可以被授權(quán)為全局層級(jí)和數(shù)據(jù)庫(kù)層級(jí)。
MySQL 權(quán)限類(lèi)型
如圖所示:
grant 語(yǔ)句的基本語(yǔ)法格式
grant 語(yǔ)句的基本語(yǔ)法格式:
grant priv_type [(column_list)] //要設(shè)置的權(quán)限項(xiàng);
[,priv_type[(column_list)]][,.....n] on
{tbl_name|*|*.*|db_name.*|db_name.tbl_name} //對(duì)象類(lèi)型;
to user[identified by [password] ‘password’]
[,user[identified by [password] ‘password’]][,....n]
[with grant_option] //可以將該用戶(hù)的權(quán)限轉(zhuǎn)移給其他用戶(hù);
示例:使用 grant 語(yǔ)句創(chuàng)建一個(gè)新用戶(hù) test1,密碼為 test123,該用戶(hù)對(duì)所有的數(shù)據(jù)又查詢(xún)、插入的權(quán)限,并授予 grant 權(quán)限。
grant select,insert on *.* to test1@localhost identified by ‘test123’ with grant option;
revoke 語(yǔ)句的基本語(yǔ)法格式
revoke 語(yǔ)句的基本語(yǔ)法格式:
revoke priv_type [(column_list)][,priv_type[(column_list)]][,.....n] on
{tbl_name|*|*.*|db_name.*|db_name.tbl_name}
from ‘username’@’hostname’[,‘username’@’hostname’][,...n]
使用 revoke 語(yǔ)句收回收回 test1 用戶(hù)對(duì) course 數(shù)據(jù)庫(kù)中 student 表的 update 權(quán)限示例:
revoke update on course.student from test1@localhost;
查看權(quán)限
語(yǔ)法:
show grants for username@hostname
例子: 查用用戶(hù) test1 的權(quán)限信息
show grants for test1@localhost;
限制權(quán)限
max_queries_per_hour count:表示每小時(shí)可以查詢(xún)數(shù)據(jù)庫(kù)的次數(shù)。 max_connections_per_hour count:表示每小時(shí)可以連接數(shù)據(jù)庫(kù)的次數(shù) max_updates_per_hour count:表示每小時(shí)可以修改數(shù)據(jù)庫(kù)的次數(shù)。
示例:授予 test1 每小時(shí)可以發(fā)出的查詢(xún)數(shù)為 50 次,每小時(shí)可以連接數(shù)據(jù)庫(kù) 10 次,每小時(shí)可以發(fā)出的更新數(shù)為 5 次。
grant all on *.* to test1@localhost identified by ‘test123’
with max_queries_per_hour 50
with max_connections_per_hour 10
with max_updates_per_hour 5;
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,系統(tǒng)用戶(hù) root 授權(quán) user1 用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù) teachingdb2 及其所有對(duì)象的權(quán)限
use teachingdb;
/****請(qǐng)?jiān)诖司帉?xiě)代碼,操作完畢之后點(diǎn)擊評(píng)測(cè)******/
/**********Begin**********/
grant all on teachingdb2.* to 'user1'@'localhost';
/**********End**********/
第2關(guān):授權(quán)-練習(xí)一
任務(wù)描述
本關(guān)任務(wù):給 user1 授予在 teachingdb 所有對(duì)象上的 SELECT 權(quán)限,并使該用戶(hù)具有給其他用戶(hù)授予相同權(quán)限的權(quán)限。
相關(guān)知識(shí)
見(jiàn)上一關(guān)
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,給 user1 授予在 teachingdb 所有對(duì)象上的 SELECT 權(quán)限,并使該用戶(hù)具有給其他用戶(hù)授予相同權(quán)限的權(quán)限。
測(cè)試說(shuō)明
-
點(diǎn)擊右上角的重置命令行 先點(diǎn)擊命令行,來(lái)到命令行界面
然后點(diǎn)擊右側(cè)的重置命令行按鈕,進(jìn)行重置
-
編寫(xiě)代碼后,點(diǎn)擊測(cè)評(píng)即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-755029.html
use teachingdb; /****請(qǐng)?jiān)诖司帉?xiě)代碼,操作完畢之后點(diǎn)擊評(píng)測(cè)******/ /**********Begin**********/ grant select on teachingdb.* to user1@localhost with grant option; /**********End**********/
?第3關(guān):授權(quán)-練習(xí)二
任務(wù)描述
本關(guān)任務(wù):給 user1 和 user2 授予 stuednt 表上的所有權(quán)限。
相關(guān)知識(shí)
見(jiàn)上一關(guān)
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼。給 user1 和 user2 授予 student 表上的所有權(quán)限。
測(cè)試說(shuō)明
-
點(diǎn)擊右上角的重置命令行 先點(diǎn)擊命令行,來(lái)到命令行界面
然后點(diǎn)擊右側(cè)的重置命令行按鈕,進(jìn)行重置
-
編寫(xiě)代碼后,點(diǎn)擊測(cè)評(píng)即可。
use teachingdb; /****請(qǐng)?jiān)诖司帉?xiě)代碼,操作完畢之后點(diǎn)擊評(píng)測(cè)******/ /**********Begin**********/ grant all on student to user1@localhost; /**********End**********/
?第4關(guān):授權(quán)-練習(xí)三
任務(wù)描述
本關(guān)任務(wù):給 user2 授予 score 表 grade 字段上的UPDATE權(quán)限。
相關(guān)知識(shí)
見(jiàn)上一關(guān)
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼。給 user2 授予 score 表 grade 字段上的 UPDATE 權(quán)限。
測(cè)試說(shuō)明
本關(guān)卡不用重置命令行:編寫(xiě)代碼后,點(diǎn)擊測(cè)評(píng)即可。
use teachingdb;
/****請(qǐng)?jiān)诖司帉?xiě)代碼,操作完畢之后點(diǎn)擊評(píng)測(cè)******/
/**********Begin**********/
/*grant update(grade) on score to user2@localhost;*/
GRANT USAGE ON *.* TO 'user2'@'localhost' IDENTIFIED BY PASSWORD '*B2B366CA5C4697F31D4C55D61F0B17E70E5664EC'
/**********End**********/
第5關(guān):回收權(quán)限
任務(wù)描述
本關(guān)任務(wù):從 user1@localhost 用戶(hù)收回查詢(xún) teachingdb 所有對(duì)象的SELECT權(quán)限。
相關(guān)知識(shí)
見(jiàn)第一關(guān)
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,從 user1@localhost 用戶(hù)收回查詢(xún) teachingdb 所有對(duì)象的 SELECT 權(quán)限。
測(cè)試說(shuō)明
-
點(diǎn)擊右上角的重置命令行 先點(diǎn)擊命令行,來(lái)到命令行界面
然后點(diǎn)擊右側(cè)的重置命令行按鈕,進(jìn)行重置
-
編寫(xiě)代碼后,點(diǎn)擊測(cè)評(píng)即可。
use teachingdb; /****請(qǐng)?jiān)诖司帉?xiě)代碼,操作完畢之后點(diǎn)擊評(píng)測(cè)******/ /**********Begin**********/ revoke select on teachingdb.* from user1@localhost; /**********End**********/
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755029.html
到了這里,關(guān)于數(shù)據(jù)庫(kù)安全控制——授權(quán)及回收權(quán)限的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!