《MySQL數(shù)據(jù)原理與應(yīng)用》 課件 第13章 數(shù)據(jù)庫安全_第1頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件 第13章 數(shù)據(jù)庫安全_第2頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件 第13章 數(shù)據(jù)庫安全_第3頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件 第13章 數(shù)據(jù)庫安全_第4頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件 第13章 數(shù)據(jù)庫安全_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫安全第13章通過本課程的學(xué)習(xí),您將應(yīng)該:了解數(shù)據(jù)庫的相關(guān)概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結(jié)構(gòu)管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標(biāo)的使用方法熟練掌握存儲函數(shù)的應(yīng)用熟練掌握觸發(fā)器的應(yīng)用熟練掌握事務(wù)的基本特性和應(yīng)用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復(fù)操作了解利用MySQL+Java開發(fā)一個(gè)數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)并部署課程目標(biāo)項(xiàng)目部署成功了解數(shù)據(jù)庫安全性概述。了解數(shù)據(jù)庫安全性控制。掌握用戶、權(quán)限和角色管理通過完成課業(yè)任務(wù)學(xué)會(huì)分析問題、解決問題,提高動(dòng)手操作能力。通過本講的學(xué)習(xí),您將可以:1.OPTION2.OPTIONOPTION4.OPTION3.用戶管理的應(yīng)用本講教學(xué)目標(biāo)目錄Content數(shù)據(jù)庫安全性概述01數(shù)據(jù)庫安全性控制02用戶管理03權(quán)限管理04權(quán)限表05角色管理06課業(yè)任務(wù)07常見錯(cuò)誤及解決方案08數(shù)據(jù)庫安全性概述0113.1數(shù)據(jù)庫安全性概述數(shù)據(jù)庫的一大特點(diǎn)是數(shù)據(jù)共享,數(shù)據(jù)共享必然帶來數(shù)據(jù)庫的安全性問題,數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)共享不能是無條件的共享,數(shù)據(jù)庫的不安全因素主要有以下幾點(diǎn):1.非授權(quán)用戶對數(shù)據(jù)庫的惡意存取和破壞獵取用戶名和用戶口令,然后假冒合法用戶竊取、修改甚至破壞用戶數(shù)據(jù)。2.數(shù)據(jù)庫中重要或敏感的數(shù)據(jù)被泄漏黑客和敵對分子千方百計(jì)盜竊數(shù)據(jù)庫中的重要數(shù)據(jù),一些機(jī)密信息被暴露。3.安全環(huán)境的脆弱性數(shù)據(jù)庫安全性與計(jì)算機(jī)系統(tǒng)安全性緊密聯(lián)系(計(jì)算機(jī)硬件、操作系統(tǒng)、網(wǎng)絡(luò)等安全性)。非法使用數(shù)據(jù)庫的情況有以下幾種:編寫合法程序繞過數(shù)據(jù)庫管理系統(tǒng)(DBMS)及其授權(quán)機(jī)制;直接或編寫應(yīng)用程序執(zhí)行非授權(quán)操作;通過多次合法查詢數(shù)據(jù)庫從中推導(dǎo)出一些保密數(shù)據(jù)。13.1數(shù)據(jù)庫安全性概述數(shù)據(jù)庫安全性控制0213.2.1計(jì)算機(jī)系統(tǒng)的安全措施在計(jì)算機(jī)系統(tǒng)中,安全措施如下圖所示,是一級一級層層設(shè)置的,這樣對計(jì)算機(jī)系統(tǒng)的安全起到一定的保障。(1)用戶標(biāo)識鑒定用戶身份,只允許合法用戶進(jìn)入系統(tǒng);(2)數(shù)據(jù)庫管理系統(tǒng)需要進(jìn)行存取控制,只允許用戶執(zhí)行合法操作;(3)操作系統(tǒng)有自己的保護(hù)措施;(4)數(shù)據(jù)以密文形式存儲在數(shù)據(jù)庫中,即使前三層被攻破,最后看到的也是以密文形式呈現(xiàn)的。13.2.2數(shù)據(jù)庫管理系統(tǒng)安全性控制系統(tǒng)提供的最外層安全保護(hù)措施;在登錄數(shù)據(jù)庫時(shí),數(shù)據(jù)庫要求用戶認(rèn)證身份,常用方式有靜態(tài)口令鑒別、動(dòng)態(tài)口令鑒別、生物特征鑒別、智能卡鑒別等。定義用戶權(quán)限是數(shù)據(jù)庫管理系統(tǒng)(DBMS)提供適當(dāng)?shù)恼Z言來定義用戶權(quán)限,存放在數(shù)據(jù)字典中,稱作安全規(guī)則或授權(quán)規(guī)則。合法權(quán)限檢查是用戶發(fā)出存取數(shù)據(jù)庫操作請求,數(shù)據(jù)庫管理系統(tǒng)(DBMS)查找數(shù)據(jù)字典,進(jìn)行合法權(quán)限檢查。用戶權(quán)限定義和合法權(quán)檢查機(jī)制一起組成了數(shù)據(jù)庫管理系統(tǒng)(DBMS)的存取控制子系統(tǒng)。(2)強(qiáng)制存取控制(MAC)(1)自主存取控制(DAC)自主存取控制(DAC)是指用戶對不同的數(shù)據(jù)對象有不同的存取權(quán)限;不同的用戶對同一數(shù)據(jù)對象也有不同的權(quán)限;并且用戶可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。強(qiáng)制存取控制(MAC)是指每一個(gè)數(shù)據(jù)對象都被標(biāo)以一定的密級;每一個(gè)用戶也被授予某一個(gè)級別的許可證;并且對于任意一個(gè)對象,只有具有合法許可證的用戶才可以存取。常用存取控制方法有自主存取控制(DAC)和強(qiáng)制存取控制(MAC)13.2.2數(shù)據(jù)庫管理系統(tǒng)安全性控制13.2.2數(shù)據(jù)庫管理系統(tǒng)安全性控制在MySQL中的GRANT語句和REVOKE語句實(shí)現(xiàn)自主存取控制,關(guān)系數(shù)據(jù)庫系統(tǒng)中存取控制對象如下表所示。用戶管理0313.3.1登錄MySQL服務(wù)器啟動(dòng)本地MySQL服務(wù)后,通過以下的SQL語句來登錄MySQL服務(wù)器。說明:(1)-h參數(shù):后面接主機(jī)名或者主機(jī)IP,hostname為主機(jī),hostIP為主機(jī)IP;(2)-P參數(shù):后面接MySQL服務(wù)的端口,通過該參數(shù)連接到指定的端口,MySQL服務(wù)的默認(rèn)端口是3306,不使用該參數(shù)時(shí)自動(dòng)連接到3306端口,port為連接的端口號;(3)-u參數(shù):后面接用戶名,username為用戶名;(4)-p參數(shù):會(huì)提示輸入密碼;(5)DatabaseName參數(shù):指明登錄到哪一個(gè)數(shù)據(jù)庫中。如果沒有該參數(shù),就會(huì)直接登錄到MySQL數(shù)據(jù)庫中,然后可以使用USE命令來選擇數(shù)據(jù)庫;(6)-e參數(shù):后面可以直接加SQL語句。登錄MySQL服務(wù)器以后即可執(zhí)行這個(gè)SQL語句,然后退出MySQL服務(wù)器。13.3.1登錄MySQL服務(wù)器【案例13.1】登錄本地MySQL服務(wù)器并查詢數(shù)據(jù)。使用root用戶登錄本地MySQL服務(wù)器,登錄后立即查詢“db_study”數(shù)據(jù)庫中“tb_department”數(shù)據(jù)表的所有數(shù)據(jù),然后退出MySQL服務(wù)器,具體的SQL語句如下所示。13.3.1登錄MySQL服務(wù)器運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知登錄MySQL服務(wù)器后立即查詢“db_study”數(shù)據(jù)庫中“tb_department”數(shù)據(jù)表的所有數(shù)據(jù),并于查詢完后退出MySQL服務(wù)器。13.3.2創(chuàng)建用戶在MySQL中創(chuàng)建用戶的基本語法形式如下:說明:(1)用戶名參數(shù)表示新建用戶的賬戶,由用戶(User)和主機(jī)名(Host)構(gòu)成;(2)“[IDENTIFIEDBY'密碼']”和“[,用戶名[IDENTIFIEDBY'密碼']]”表示可選,可以指定用戶登錄時(shí)需要密碼驗(yàn)證,也可以不指定密碼驗(yàn)證,這樣用戶可以直接登錄。不指定密碼的方式不安全,不推薦使用。如果指定密碼值,這里需要使用IDENTIFIEDBY指定明文密碼值;(3)CREATEUSER語句可以同時(shí)創(chuàng)建多個(gè)用戶。13.3.2創(chuàng)建用戶【案例13.2】創(chuàng)建王小明用戶。在本地MySQL數(shù)據(jù)庫中創(chuàng)建一個(gè)用戶,賬戶名為“王小明”,登錄密碼為“123321”,具體的SQL語句如下所示。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知?jiǎng)?chuàng)建用戶成功。13.3.3修改用戶在MySQL中修改用戶名的基本語法形式如下:1.修改用戶名說明:(1)mysql.user:使用MySQL的user表。user表是MySQL中最重要的一個(gè)權(quán)限表,記錄用戶賬號和權(quán)限信息,具體請見13.5權(quán)限表;(2)用戶名1:當(dāng)前數(shù)據(jù)庫中存在的用戶的賬戶名;(3)用戶名2:需要修改成的用戶的賬戶名;(4)修改完之后需要執(zhí)行“FLUSHPRIVILEGES;”語句刷新權(quán)限,不然新修改的用戶無法登錄。13.3.3修改用戶在MySQL中修改當(dāng)前用戶密碼的基本語法形式如下:2.設(shè)置當(dāng)前用戶密碼說明:(1)USER()函數(shù)作用是返回當(dāng)前用戶名和主機(jī)名;(2)只能修改當(dāng)前登錄用戶的密碼。13.3.3修改用戶在MySQL中修改普通用戶密碼的SQL語句基本語法形式如下:3.修改其他用戶密碼說明:(1)uesr:需要的普通用戶的用戶名;(2)修改其他普通用戶的前提是當(dāng)前用戶具有CREATEUSER(創(chuàng)建用戶)的權(quán)限。13.3.4查看用戶在MySQL中查看所有用戶的基本語法形式如下:說明:(1)mysql.user:使用MySQL的user表。user表是MySQL中最重要的一個(gè)權(quán)限表,記錄用戶賬號和權(quán)限信息,具體請見13.5權(quán)限表;(2)要執(zhí)行上面的查詢語句,必須以管理員的身份登錄;(3)當(dāng)前只查看user用戶名字段,也可以查看其他字段。13.3.4查看用戶【案例13.4】查看MySQL數(shù)據(jù)庫的所有用戶。執(zhí)行“SELECTuserFROMmysql.user;”SQL語句查看當(dāng)前數(shù)據(jù)庫的所有用戶,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知MySQL數(shù)據(jù)庫的所有用戶,并且有剛才修改的“王明明”用戶。13.3.5刪除用戶在MySQL使用DROP語句刪除用戶的基本語法形式如下:1.使用DROP方式刪除說明:(1)可用于刪除一個(gè)或多個(gè)用戶,并撤銷其權(quán)限;(2)必須擁有MySQL數(shù)據(jù)庫的DELETE權(quán)限或全局CREATEUSER權(quán)限;(3)在使用該語句時(shí),若沒有明確地給出賬戶的主機(jī)名,則該主機(jī)名默認(rèn)為“%”。13.3.5刪除用戶【案例13.5】刪除王明明用戶。在MySQL數(shù)據(jù)庫中刪除王明明用戶,并撤銷其權(quán)限,具體的SQL語句如下所示。1.使用DROP方式刪除運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知?jiǎng)h除“王明明”用戶完成。執(zhí)行“SELECTuserFROMmysql.user;”SQL語句查看當(dāng)前數(shù)據(jù)庫的所有用戶,查詢到結(jié)果如下圖所示,由運(yùn)行結(jié)果可知已經(jīng)將“王明明”用戶刪除成功。13.3.5刪除用戶在MySQL數(shù)據(jù)庫中使用DELETE語句直接刪除mysql.user表中相應(yīng)的用戶信息的SQL語句基本語法形式如下:2.使用DELETE方式刪除說明:(1)必須擁有mysql.user表的DELETE權(quán)限;(2)Host和User這兩個(gè)字段都是mysql.user表的主鍵。因此,需要兩個(gè)字段的值才能確定一條記錄;(3)刪除之后需要執(zhí)行“FLUSHPRIVILEGES;”語句刷新權(quán)限使用戶生效;(4)使用DELETE方式刪除用戶,系統(tǒng)會(huì)有殘留信息保留。權(quán)限管理0413.4.1權(quán)限列表在MySQL數(shù)據(jù)庫中執(zhí)行“SHOWPRIVILEGES\G”SQL語句,運(yùn)行結(jié)果如下圖所示(部分),可以查看當(dāng)前MySQL數(shù)據(jù)庫中的所有權(quán)限。13.4.1權(quán)限列表影響MySQL數(shù)據(jù)庫安全的重要因素是用戶的權(quán)限,所以如何管理用戶的權(quán)限對數(shù)據(jù)庫安全影響較大,在MySQL數(shù)據(jù)庫中CRANT(授權(quán))和REVOKE(收回權(quán)限)SQL語句涉及到的權(quán)限名稱如下:1.CREATE和DROP權(quán)限創(chuàng)建新的數(shù)據(jù)庫和數(shù)據(jù)表,或者刪除已有的數(shù)據(jù)庫和數(shù)據(jù)表。若MySQL數(shù)據(jù)庫中的DROP權(quán)限授予某用戶,該用戶就可以刪除MySQL訪問權(quán)限保存的數(shù)據(jù)庫。2.SELECT、INSERT、UPDATE和DELETE權(quán)限允許在一個(gè)數(shù)據(jù)庫現(xiàn)有的數(shù)據(jù)表上進(jìn)行相關(guān)操作。13.4.1權(quán)限列表4.INDEX權(quán)限允許創(chuàng)建和刪除索引,INDEX適用于已有的數(shù)據(jù)表。如果具有某個(gè)數(shù)據(jù)表的CREATE權(quán)限,就可以在CREATETABLE語句中包括索引定義。5.ALTER權(quán)限允許使用ALTERTABLE來更改數(shù)據(jù)表的結(jié)構(gòu)和重新命名數(shù)據(jù)表。3.SELECT權(quán)限只有在真正從一個(gè)數(shù)據(jù)表中檢索行時(shí)才被用到。13.4.1權(quán)限列表7.ALTERROUTINE權(quán)限用來更改和刪除保存的程序。8.EXECUTE權(quán)限用來執(zhí)行保存的程序。6.CREATEROUTINE權(quán)限用來創(chuàng)建保存的程序或者是函數(shù)和程序。13.4.1權(quán)限列表10.FILE權(quán)限允許用戶使用LOADDATAINFILE和SELECT…INTOOUTFILE語句讀或者寫服務(wù)器上的文件,任何被授予FILE權(quán)限的用戶都能讀或者寫MySQL服務(wù)器上的任何文件。9.GRANT權(quán)限允許授權(quán)給其他用戶,可用于數(shù)據(jù)庫、表和保存的程序。13.4.2授予權(quán)限的原則權(quán)限控制主要是出于數(shù)據(jù)庫安全考慮,因此需要遵循以下幾個(gè)原則。(1)只授予能滿足需要的最小權(quán)限,防止用戶誤操作。例如用戶只是需要查詢,那就只給SELECT權(quán)限就可以了,不要給用戶賦予UPDATE、INSERT或者DELETE權(quán)限;(2)創(chuàng)建用戶的時(shí)限制用戶的登錄主機(jī),一般是限制成指定IP或者內(nèi)網(wǎng)IP段;(3)為每個(gè)用戶設(shè)置滿足密碼復(fù)雜度的密碼;(4)定期清理不需要的用戶,并回收權(quán)限或者刪除用戶。13.4.3授予權(quán)限授權(quán)是指給某個(gè)用戶授予權(quán)限,合理的授權(quán)能確保數(shù)據(jù)庫的安全。給用戶授權(quán)的方式有兩個(gè)種,分別是通過把角色賦予用戶給用戶授權(quán)和直接給用戶授權(quán)。用戶是數(shù)據(jù)庫的使用者,可以通過給用戶授予訪問數(shù)據(jù)庫中資源的權(quán)限,來控制使用者對數(shù)據(jù)庫的訪問,消除安全隱患。MySQL中可以授予的權(quán)限有如下幾組:列權(quán)限:和表中的一個(gè)具體列相關(guān);表權(quán)限:和一個(gè)具體表中的所有數(shù)據(jù)相關(guān);數(shù)據(jù)庫權(quán)限:和一個(gè)具體的數(shù)據(jù)庫中的所有表相關(guān);用戶權(quán)限:和MySQL所有的數(shù)據(jù)庫相關(guān)。在MySQL中在GRANT語句中可用于指定權(quán)限級別的值有以下幾類格式:*:表示當(dāng)前數(shù)據(jù)庫中的所有表;*.*:表示所有數(shù)據(jù)庫中的所有表;db_name.*:表示某個(gè)數(shù)據(jù)庫中的所有表,db_name指定數(shù)據(jù)庫名;db_name.tbl_name:表示某個(gè)數(shù)據(jù)庫中的某個(gè)表或視圖,db_name指定數(shù)據(jù)庫名,tbl_name指定表名或視圖名;db_name.routine_name:表示某個(gè)數(shù)據(jù)庫中的某個(gè)存儲過程或函數(shù),routine_name指定存儲過程名或函數(shù)名;TO子句:如果權(quán)限被授予給一個(gè)不存在的用戶,MySQL會(huì)自動(dòng)執(zhí)行一條CREATEUSER語句來創(chuàng)建這個(gè)用戶,但同時(shí)必須為該用戶設(shè)置密碼。13.4.3授予權(quán)限在MySQL中為用戶授權(quán)的基本語法形式如下:說明:(1)用戶名參數(shù)表示新建用戶的賬戶,由用戶(User)和主機(jī)名(Host)構(gòu)成;(2)可以設(shè)置多個(gè)權(quán)限;(3)WITH關(guān)鍵字后面可帶有一個(gè)或多個(gè)with_option參數(shù)。13.4.3授予權(quán)限【案例13.6】給用戶授權(quán)。在MySQL數(shù)據(jù)庫中給王小明用戶用本地命令行方式,授予“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表的增刪查改的權(quán)限,具體的SQL語句如下所示。說明:(1)先創(chuàng)建王小明用戶,并規(guī)定通過本地localhost連接;(2)db_study.*表示該數(shù)據(jù)庫的所有數(shù)據(jù)表。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知給王小明用戶授權(quán)成功。13.4.4查看權(quán)限在MySQL中查看當(dāng)前用戶權(quán)限的基本語法形式如下:1.查看當(dāng)前用戶權(quán)限說明:(1)在命令的后面添加“\G”,讓顯示的信息更有條理;(2)查看到當(dāng)前用戶的所有權(quán)限。13.4.4查看權(quán)限在MySQL中某用戶的全局權(quán)限的基本語法形式如下:2.查看某用戶的全局權(quán)限說明:(1)在命令的后面添加“\G”,讓顯示的信息更有條理;(2)查看到當(dāng)前用戶的所有權(quán)限;(3)只要?jiǎng)?chuàng)建了一個(gè)用戶,系統(tǒng)就會(huì)自動(dòng)給“USAGE”權(quán)限,意思是連接登錄數(shù)據(jù)庫的權(quán)限。在MySQL數(shù)據(jù)庫中查看王小明用戶的全局權(quán)限,具體的SQL語句如下所示。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知王小明用戶具備“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表進(jìn)行增刪查改的權(quán)限。13.4.5收回權(quán)限在MySQL中收回用戶特定權(quán)限的基本語法形式如下:1.收回用戶某些特定的權(quán)限收回權(quán)限就是取消已經(jīng)賦予用戶的某些權(quán)限。通過收回用戶不必要的權(quán)限可以在一定程度上保證系統(tǒng)的安全性。在MySQL中使用“REVOKE”(收回權(quán)限)語句可以取消用戶的某些權(quán)限。說明:(1)可以收回用戶的若干條權(quán)限;(2)用戶名參數(shù)表示新建用戶的賬戶,由用戶(User)和主機(jī)名(Host)構(gòu)成。13.4.5收回權(quán)限在MySQL中收回用戶的所有權(quán)限的基本語法形式如下:2.收回用戶的所有權(quán)限說明:(1)*.*表示收回用戶全庫的權(quán)限;(2)用戶名參數(shù)表示新建用戶的賬戶,由用戶(User)和主機(jī)名(Host)構(gòu)成;(3)使用REVOKE語句,必須擁有MySQL數(shù)據(jù)庫全局CREATEUSER權(quán)限或UPDATE權(quán)限;(4)使用REVOKE收回權(quán)限之后,用戶賬戶的記錄將從db、host、tables_priv和columns_priv表中刪除,但是用戶賬戶記錄仍然在user表中保存。權(quán)限表0513.5權(quán)限表在MySQL中查看權(quán)限表字段的基本語法形式如下:MySQL在安裝時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè)名為mysql的數(shù)據(jù)庫,mysql數(shù)據(jù)庫中存儲的都是用戶權(quán)限表。用戶登錄以后,MySQL會(huì)根據(jù)這些權(quán)限表的內(nèi)容為每個(gè)用戶賦予相應(yīng)的權(quán)限。說明:權(quán)限表名有user、db、tables_priv、columns_priv、procs_priv。13.5.1user表用戶列存儲的是用戶連接MySQL數(shù)據(jù)庫時(shí)需要輸入的信息,user表的用戶列如右表所示。用戶登錄時(shí),如果這三個(gè)字段同時(shí)匹配,MySQL數(shù)據(jù)庫系統(tǒng)才會(huì)允許其登錄。創(chuàng)建新用戶時(shí),也是設(shè)置這三個(gè)字段的值。修改用戶密碼時(shí),實(shí)際就是修改user表的authentication_string字段的值。所以這三個(gè)字段決定了用戶能否登錄。1.用戶列user表是MySQL中最重要的一個(gè)權(quán)限表,用來記錄允許連接到服務(wù)器的賬號信息。需要注意的是,在user表里啟用的所有權(quán)限都是全局級的,適用于所有數(shù)據(jù)庫。user表中的字段大致可以分為四類,分別是用戶列、權(quán)限列、安全列和資源控制列。13.5.1user表權(quán)限列的字段決定了用戶的權(quán)限,用來描述在全局范圍內(nèi)允許對數(shù)據(jù)和數(shù)據(jù)庫進(jìn)行的操作。權(quán)限可分為兩大類,分別是高級管理權(quán)限和普通權(quán)限:高級管理權(quán)限主要對數(shù)據(jù)庫進(jìn)行管理,例如關(guān)閉服務(wù)的權(quán)限或超級權(quán)限等;普通權(quán)限主要操作數(shù)據(jù)庫,例如查詢權(quán)限或修改權(quán)限等。2.權(quán)限列user表的權(quán)限列包括Select_priv、Insert_priv等以priv結(jié)尾的字段,這些字段值的數(shù)據(jù)類型為ENUM,可取的值只有Y和N:Y表示該用戶有對應(yīng)的權(quán)限,N表示該用戶沒有對應(yīng)的權(quán)限。從安全角度考慮,這些字段的默認(rèn)值都為N。user表的權(quán)限列(部分)如下表所示。13.5.1user表安全列主要用來判斷用戶是否能夠登錄成功,user表中的安全列(部分)如下表所示。3.安全列

通常標(biāo)準(zhǔn)的發(fā)行版不支持ssl,可以使用“SHOWVARIABLESLIKE"have_openssl"”語句來查看是否具有ssl功能。如果have_openssl的值為DISABLED,則不支持ssl加密功能。13.5.1user表資源控制列的字段用來限制用戶使用的資源,user表中的資源控制列如下表所示。4.資源控制列

以上字段的默認(rèn)值為0,表示沒有限制。若一個(gè)小時(shí)內(nèi)用戶查詢或者連接數(shù)量超過資源控制限制,用戶將被鎖定,直到下一個(gè)小時(shí)才可以在此執(zhí)行對應(yīng)的操作。可以使用GRANT語句更新這些字段的值。13.5.1user表【案例13.8】查詢user表的特定字段。查詢MySQL數(shù)據(jù)庫中user表的host(主機(jī)名)、user(用戶名)、authentication_string(密碼)字段,SQL語句如下。4.資源控制列

運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知MySQL數(shù)據(jù)庫中的所有用戶的主機(jī)名,用戶名以及密碼等信息。說明:用戶的密碼是以密文的形式呈現(xiàn)的。13.5.2db表db表用戶列有三個(gè)字段,分別是Host、User、Db,標(biāo)識從某個(gè)主機(jī)連接某個(gè)用戶對某個(gè)數(shù)據(jù)庫的操作權(quán)限,這三個(gè)字段的組合構(gòu)成了db表的主鍵。db表用戶列如右表所示。1.用戶列db表比較常用,是MySQL數(shù)據(jù)庫中非常重要的權(quán)限表,表中存儲了用戶對某個(gè)數(shù)據(jù)庫的操作權(quán)限。表中的字段大致可以分為兩類,分別是用戶列和權(quán)限列。13.5.2db表db表中的權(quán)限列和user表中的權(quán)限列大致相同,區(qū)別是user表中的權(quán)限是針對所有數(shù)據(jù)庫的,而db表中的權(quán)限只針對指定的數(shù)據(jù)庫。若希望用戶只對某個(gè)數(shù)據(jù)庫有操作權(quán)限,可以先將user表中對應(yīng)的權(quán)限設(shè)置為N,再在db表中設(shè)置對應(yīng)數(shù)據(jù)庫的操作權(quán)限。2.權(quán)限列13.5.3tables_priv表和columns_priv表tables_priv表用來對單個(gè)表進(jìn)行權(quán)限設(shè)置,columns_priv表用來對單個(gè)數(shù)據(jù)列進(jìn)行權(quán)限設(shè)置。tables_priv表結(jié)構(gòu)(部分)如下表所示。13.5.3tables_priv表和columns_priv表columns_priv表結(jié)構(gòu)(部分)如下表所示。13.5.4procs_priv表procs_priv表可以對存儲過程和存儲函數(shù)進(jìn)行權(quán)限設(shè)置,procs_priv的表結(jié)構(gòu)(部分)如下表所示。角色管理0613.6.1角色的作用引入角色的目的是便于管理擁有相同權(quán)限的用戶。設(shè)定恰當(dāng)?shù)臋?quán)限,可以確保數(shù)據(jù)的安全性。角色與權(quán)限的關(guān)系如下圖所示。13.6.2創(chuàng)建角色在MySQL中創(chuàng)建角色的基本語法形式如下:說明:(1)角色名稱的命名規(guī)則和用戶名類似;(2)角色名不可省略,不可為空;(3)主機(jī)名可以省略。省略后默認(rèn)為%。13.6.2創(chuàng)建角色【案例13.9】創(chuàng)建一個(gè)班長的角色。在MySQL數(shù)據(jù)庫中創(chuàng)建一個(gè)班長的角色,主機(jī)名可采用默認(rèn)的%,具體的SQL語句如下。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如圖13.13所示,由運(yùn)行結(jié)果可知?jiǎng)?chuàng)建班長角色成功。13.6.3給角色授予權(quán)限創(chuàng)建角色之后,默認(rèn)這個(gè)角色是沒有任何權(quán)限的,根據(jù)需要給角色授權(quán)。在MySQL中給角色授權(quán)的基本語法形式如下。說明:(1)角色授權(quán)操作和用戶授權(quán)類似;(2)可以設(shè)置多個(gè)權(quán)限,具體的權(quán)限可以通過執(zhí)行“SHOWPRIVILEGES;”語句來進(jìn)行查看。13.6.3給角色授予權(quán)限【案例13.10】給班長角色授權(quán)。在MySQL數(shù)據(jù)庫中給班長角色賦予“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表只讀權(quán)限,具體的SQL語句如下所示。說明:(1)僅授予“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表只讀權(quán)限;(2)db_study.*表示該數(shù)據(jù)庫的所有數(shù)據(jù)表。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如圖13.14所示,由運(yùn)行結(jié)果可知給班長角色授權(quán)完成。13.6.4查看角色的權(quán)限說明:只要?jiǎng)?chuàng)建了一個(gè)角色,系統(tǒng)就會(huì)自動(dòng)給“USAGE”權(quán)限,意思是連接登錄數(shù)據(jù)庫的權(quán)限。第二行SQL語句代表了給角色班長賦予的權(quán)限,也就是對“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表只讀權(quán)限?!景咐?3.11】查看班長角色的權(quán)限。查看已經(jīng)賦權(quán)過的班長班長角色的權(quán)限,具體的SQL語句如下所示。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如右圖所示,由運(yùn)行結(jié)果可知班長角色具備“db_study”數(shù)據(jù)庫下的所有數(shù)據(jù)表只讀的權(quán)限。在MySQL數(shù)據(jù)庫中賦予角色權(quán)限之后,查看當(dāng)前用戶權(quán)限的基本語法形式如下:13.6.5回收角色的權(quán)限角色授權(quán)后,若需要撤銷角色或角色權(quán)限使用如下SQL語句。修改了角色的權(quán)限,會(huì)影響擁有該角色的賬戶的權(quán)限。說明:可以收回用戶的若干條權(quán)限。13.6.6給用戶賦予角色角色創(chuàng)建并授權(quán)后,要賦給用戶并處于激活狀態(tài)才能發(fā)揮作用。給用戶添加角色的基本語法形式如下。說明:可將多個(gè)角色同時(shí)賦予多個(gè)用戶。13.6.6給用戶賦予角色【案例13.12】給王小明用戶添加班長角色的權(quán)限。在MySQL數(shù)據(jù)庫中給王小明用戶添加班長角色的權(quán)限,具體的SQL語句如下所示。說明:需要注意用戶的連接方式是本地localhost還是其他。運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知已為王小明用戶添加班長角色的權(quán)限。13.6.6給用戶賦予角色使用王小明用戶登錄,執(zhí)行“SELECTCURRENT_ROLE();”SQL語句,查詢當(dāng)前角色,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知當(dāng)前角色還未激活。說明:(1)CURRENT_ROLE():函數(shù)返回一個(gè)表示當(dāng)前會(huì)話當(dāng)前激活的角色的字符串;(2)顯示結(jié)果為NONE表示角色未激活。13.6.7激活角色使用SETDEFAULTROLE語句激活角色的基本語法形式如下:1.使用SETDEFAULTROLE語句激活角色說明:只能激活指定用戶的角色。在MySQL數(shù)據(jù)庫中activate_all_roles_on_login值的默認(rèn)情況是“OFF”,執(zhí)行“SHOWVARIABLESLIKE'activate_all_roles_on_login';”SQL語句查看默認(rèn)的值,查詢結(jié)果如下圖所示。由此可知activate_all_roles_on_login值的默認(rèn)情況是“OFF”。2.將activate_all_roles_on_login值設(shè)置為ON13.6.7激活角色通過執(zhí)行“SETGLOBALactivate_all_roles_on_login=ON;”SQL語句將值修改為“ON”,如下圖所示,值修改完畢。2.將activate_all_roles_on_login值設(shè)置為ON說明:該條SQL語句的意思是,對所有角色永久激活。運(yùn)行這條語句之后,用戶才真正擁有了賦予角色的所有權(quán)限。重新用王小明用戶登錄MySQL數(shù)據(jù)庫,再次執(zhí)行“SELECTCURRENT_ROLE();”SQL語句,查詢當(dāng)前角色,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知角色已激活。13.6.8撤銷用戶的角色撤銷用戶角色的基本語法形式如下?!景咐?3.13】撤銷王小明用戶的班長角色。在MySQL數(shù)據(jù)庫中撤銷王小明用戶的班長角色,具體的SQL語句如下所示。說明:需要注意用戶的連接方式是本地localhost還是其他。13.6.8撤銷用戶的角色運(yùn)行上述SQL語句,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知已撤銷王小明用戶的班長角色。執(zhí)行“SHOWGRANTSFOR王小明@localhost;”SQL語句,查看王小明用戶的角色信息,運(yùn)行結(jié)果如下圖所示,由運(yùn)行結(jié)果可知王小明用戶之前的班長角色已被撤銷。13.6.9刪除角色在實(shí)際生產(chǎn)中當(dāng)需要對業(yè)務(wù)重新整合的時(shí),可能就需要對之前創(chuàng)建的角色進(jìn)行清理,刪除一些不會(huì)再使用的角色,基本語法形式如下。說明:需要注意用戶的連接方式是本地localhost還是其他。課業(yè)任務(wù)0713.7課業(yè)任務(wù)課業(yè)任務(wù)13-1創(chuàng)建王大明用戶,并授予權(quán)限課業(yè)任務(wù)13-2修改王大明的用戶名,并收回權(quán)限課業(yè)任務(wù)13-3創(chuàng)建學(xué)委角色,并賦予權(quán)限課業(yè)任務(wù)13-6使用Navicat工具管理用戶課業(yè)任務(wù)13-4收回學(xué)委的權(quán)限,并將其刪除課業(yè)任務(wù)13-5使用Workbench工具管理用戶王小明想利用MySQL+Java開發(fā)一個(gè)數(shù)據(jù)庫學(xué)習(xí)系統(tǒng),在熟悉了事務(wù)的基本特性、事務(wù)的應(yīng)用場景后,需要進(jìn)行對數(shù)據(jù)庫的用戶進(jìn)行規(guī)范化管理,提高數(shù)據(jù)庫的安全性,現(xiàn)通過6個(gè)課業(yè)任務(wù)來完成。具體請見實(shí)驗(yàn)12常見錯(cuò)誤及解決方案0813.8常見錯(cuò)誤及解決方案具體請見實(shí)驗(yàn)1213.8.1錯(cuò)誤13-1查看數(shù)據(jù)庫中的所有用戶失敗13.8.2錯(cuò)誤13-2無法修改普通用戶密碼 選擇題(1)數(shù)據(jù)庫的不安全因素有(

)。A.非授權(quán)用戶對數(shù)據(jù)庫的惡意存取和破壞B.數(shù)據(jù)庫中重要或敏感的數(shù)據(jù)被泄露C.安全環(huán)境的脆弱性D.數(shù)據(jù)庫具有保護(hù)機(jī)制(2)數(shù)據(jù)庫安全性控制的常用方法是(

)。A.用戶標(biāo)識和鑒定B.存取控制C.視圖D.數(shù)據(jù)加密填空題判斷題操作題ABCABD選擇題(3)下列選項(xiàng)可以創(chuàng)建用戶的是

)。A.CREATEUSER用戶名;B.SELECTuserFROMmysql.user;C.DROPUSER用戶;D.CREATEROLE角色名;(4)下列不屬于MySQL的權(quán)限表的是()。A.user表B.db表C.procs_priv表D.tb_class表填空題判斷題操作題AD選擇題(5)下列屬于回收角色的權(quán)限的語句是(

)。A.CREATEB.GRANTC.SHOWD.REVOKE填空題判斷題操作題D選擇題填空題判斷題操作題(1)數(shù)據(jù)庫的一大特點(diǎn)是

。(2)用戶身份鑒別常用方式有

。(3)在MySQL中修改用戶名的SQL語句是

。(4)在MySQL中授予權(quán)限的原則是

。數(shù)據(jù)的持久性靜態(tài)口令鑒別、動(dòng)態(tài)口令鑒別、生物特征鑒別、智能卡鑒別等RENAMEUSER'舊用戶名'TO'新用戶名'最小權(quán)限原則判斷題填空題選擇題操作題(1)MySQL數(shù)據(jù)庫不存在安全性問題。(

)(2)數(shù)據(jù)庫安全性與計(jì)算機(jī)系統(tǒng)安全性緊密聯(lián)系。(

)(3)在MySQL中的GRANT語句和REVOKE語句實(shí)現(xiàn)自主存取控制。(

)(4)普通用戶也可以查看數(shù)據(jù)庫中的所有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論