數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 課件 項(xiàng)目9、10 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器、學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理_第1頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 課件 項(xiàng)目9、10 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器、學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理_第2頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 課件 項(xiàng)目9、10 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器、學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理_第3頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 課件 項(xiàng)目9、10 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器、學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理_第4頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 課件 項(xiàng)目9、10 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器、學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目9學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)中的觸發(fā)器數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用掌握使用SQL語(yǔ)句創(chuàng)建觸發(fā)器、修改觸發(fā)器、刪除觸發(fā)器的方法掌握使用SQL語(yǔ)句創(chuàng)建INSERT型觸發(fā)器的方法掌握使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器的方法掌握使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器的方法本章目標(biāo)一、使用SQL語(yǔ)句創(chuàng)建INSERT型觸發(fā)器1.觸發(fā)器概述觸發(fā)器可以看作是一種特殊類型的存儲(chǔ)過(guò)程,它與存儲(chǔ)過(guò)程的區(qū)別在于存儲(chǔ)過(guò)程使用時(shí)需要調(diào)用,而觸發(fā)器是在預(yù)先定義好的事件(如INSERT,DELETE等操作)發(fā)生時(shí),才會(huì)被MySQL自動(dòng)調(diào)用。創(chuàng)建觸發(fā)器時(shí)需要與數(shù)據(jù)表相關(guān)聯(lián),當(dāng)表發(fā)生特定事件(如INSERT、DELETE等操作)時(shí),就會(huì)自動(dòng)執(zhí)行觸發(fā)器中提前預(yù)訂好的SQL代碼,實(shí)現(xiàn)插入數(shù)據(jù)前,強(qiáng)制檢驗(yàn)或轉(zhuǎn)換數(shù)據(jù)等操作,或是在觸發(fā)器中代碼執(zhí)行錯(cuò)誤后,撤銷已執(zhí)行成功的操作,保證數(shù)據(jù)的安全。因此,不難看出觸發(fā)器在使用時(shí)的優(yōu)點(diǎn)和缺點(diǎn),具體內(nèi)容如下(1)優(yōu)點(diǎn)

觸發(fā)器可以通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)無(wú)痕更改操作

保證數(shù)據(jù)安全,進(jìn)行安全校驗(yàn)。(2)缺點(diǎn)

觸發(fā)器的使用會(huì)影響數(shù)據(jù)庫(kù)的結(jié)構(gòu),同時(shí)增加了維護(hù)的復(fù)雜程度

觸發(fā)器的無(wú)痕操作會(huì)造成數(shù)據(jù)在程序(如PHP、Java等)層面不可控。一、創(chuàng)建觸發(fā)器1.語(yǔ)法結(jié)構(gòu)觸發(fā)器必須創(chuàng)建在指定的數(shù)據(jù)表上,在MySQL中,創(chuàng)建觸發(fā)器語(yǔ)法如下:createtrigger觸發(fā)器名觸發(fā)時(shí)間觸發(fā)事件on表名foreachrowbegintrigger_stmtend;圖9-1Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)1:創(chuàng)建insert型觸發(fā)器TR1_T1創(chuàng)建insert類型觸發(fā)器TR1_T1,當(dāng)向成績(jī)表中插入一條成績(jī)信息時(shí),成績(jī)采用百分制在0~100之間,當(dāng)輸入成績(jī)小于0時(shí),則按0輸入,當(dāng)輸入成績(jī)大于100,則按100輸入。并執(zhí)行實(shí)現(xiàn)查詢的操作。一、使用SQL語(yǔ)句創(chuàng)建無(wú)參的存儲(chǔ)過(guò)程并調(diào)用圖9-2Navicat工具中使用SQL語(yǔ)句觸發(fā)觸發(fā)器子任務(wù)1:創(chuàng)建insert型觸發(fā)器TR1_T1根據(jù)要求,觸發(fā)器必須在數(shù)據(jù)插入表之前完成成績(jī)的控制,所以使用beforeinsert類型觸發(fā)器。當(dāng)向成績(jī)表中插入數(shù)據(jù)時(shí),觸發(fā)器自動(dòng)觸發(fā),完成成績(jī)的控制。執(zhí)行以下語(yǔ)句將觸發(fā)該觸發(fā)器。運(yùn)行效果如圖9-2所示。一、使用SQL語(yǔ)句創(chuàng)建無(wú)參的存儲(chǔ)過(guò)程并調(diào)用圖9-3Navicat工具中使用SQL語(yǔ)句查詢成績(jī)表子任務(wù)1:創(chuàng)建insert型觸發(fā)器TR1_T1打開(kāi)如圖9-3所示界面,通過(guò)查詢語(yǔ)句發(fā)現(xiàn)存入數(shù)據(jù)庫(kù)的成績(jī)是100,而不是120。運(yùn)行效果如圖9-3所示。一、使用SQL語(yǔ)句創(chuàng)建無(wú)參的存儲(chǔ)過(guò)程并調(diào)用圖9-4Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)2:創(chuàng)建insert型觸發(fā)器TR1_T2創(chuàng)建insert類型觸發(fā)器TR1_T2,增加一條學(xué)生記錄時(shí),需要檢查性別是否符合范圍要求。并執(zhí)行插入錯(cuò)誤驗(yàn)證觸發(fā)器。一、使用SQL語(yǔ)句創(chuàng)建無(wú)參的存儲(chǔ)過(guò)程并調(diào)用圖9-5Navicat工具中使用SQL語(yǔ)句觸發(fā)器生效子任務(wù)2:創(chuàng)建insert型觸發(fā)器TR1_T2根據(jù)要求,觸發(fā)器必須在數(shù)據(jù)插入表之前完成數(shù)據(jù)的控制,所以使用beforeinsert類型觸發(fā)器。當(dāng)向?qū)W生表中插入數(shù)據(jù)時(shí),觸發(fā)器自動(dòng)觸發(fā),驗(yàn)證性別的輸入。執(zhí)行以下語(yǔ)句將觸發(fā)該觸發(fā)器。運(yùn)行效果如圖9-5所示。一、使用SQL語(yǔ)句創(chuàng)建無(wú)參的存儲(chǔ)過(guò)程并調(diào)用1.MySQL創(chuàng)建多個(gè)觸發(fā)器如何在MySQL中為相同的事件和操作時(shí)間創(chuàng)建多個(gè)觸發(fā)器。他與MySQL5.7.2+版本相關(guān)。如果你有一個(gè)較舊版本的MySQL,部分的語(yǔ)句將不起作用。在MySQL5.7.2版之前,您只能為表中的事件創(chuàng)建一個(gè)觸發(fā)器,例如,您只能為BEFOREUPDATE或AFTERUPDATE事件創(chuàng)建一個(gè)觸發(fā)器。MySQL5.7.2+解除了這一限制,允許您為表中的相同事件和操作時(shí)間創(chuàng)建多個(gè)觸發(fā)器。事件發(fā)生時(shí),觸發(fā)器將按順序激活。創(chuàng)建第一個(gè)觸發(fā)器的語(yǔ)法保持不變。如果您在表中有相同事件的多個(gè)觸發(fā)器,MySQL將按創(chuàng)建順序調(diào)用觸發(fā)器。要更改觸發(fā)器的順序,您需要指定FOLLOWS或PRECEDES在FOREACHROW子句之后。FOLLOWS:選項(xiàng)允許在現(xiàn)有觸發(fā)器之后激活新觸發(fā)器。PRECEDES:選項(xiàng)允許在現(xiàn)有觸發(fā)器之前激活新觸發(fā)器。二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器2.創(chuàng)建多個(gè)觸發(fā)器語(yǔ)法DELIMITER$$CREATETRIGGERtrigger_name[BEFORE|AFTER][INSERT|UPDATE|DELETE]ONtable_nameFOREACHROW[FOLLOWS|PRECEDES]existing_trigger_nameBEGIN…END$$DELIMITER;二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器圖9-5Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)1:創(chuàng)建update型觸發(fā)器TR2_T1創(chuàng)建update型觸發(fā)器TR2_T1,當(dāng)修改一個(gè)記錄時(shí),確保此記錄的成績(jī)(score)在0~100分之間。并執(zhí)行修改操作錯(cuò)誤驗(yàn)證觸發(fā)器。二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器圖9-6Navicat工具中使用SQL語(yǔ)句觸發(fā)器生效子任務(wù)1:創(chuàng)建update型觸發(fā)器TR2_T1根據(jù)要求,觸發(fā)器必須在數(shù)據(jù)更新表之后完成成績(jī)的控制,所以使用AFTERUPDATE類型觸發(fā)器。當(dāng)向成績(jī)表中修改數(shù)據(jù)時(shí),觸發(fā)器自動(dòng)觸發(fā),完成成績(jī)的控制。執(zhí)行以下語(yǔ)句將觸發(fā)該觸發(fā)器。運(yùn)行效果如圖9-6所示。二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器圖9-7Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)2:創(chuàng)建update型觸發(fā)器TR2_T2創(chuàng)建update型觸發(fā)器TR2_T2,在學(xué)生表Student中定義一個(gè)觸發(fā)器,保證修改學(xué)生的出生日期要大于學(xué)生的注冊(cè)日期。并執(zhí)行修改操作驗(yàn)證觸發(fā)器。二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器圖9-8Navicat工具中使用SQL語(yǔ)句觸發(fā)器生效子任務(wù)2:創(chuàng)建update型觸發(fā)器TR2_T2根據(jù)要求,觸發(fā)器必須在數(shù)據(jù)更新表之后完成成績(jī)的控制,所以使用AFTERUPDATE類型觸發(fā)器。當(dāng)向?qū)W生表中修改數(shù)據(jù)時(shí),觸發(fā)器自動(dòng)觸發(fā),完成出生日期的控制。執(zhí)行以下語(yǔ)句將觸發(fā)該觸發(fā)器。運(yùn)行效果如圖9-8所示。二、

使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器查看觸發(fā)器如果想通過(guò)語(yǔ)句查看數(shù)據(jù)庫(kù)中已經(jīng)存在的觸發(fā)器的信息,可以采用兩種方法:一種是利用SHOWTRIGGERS語(yǔ)句查看觸發(fā)器,另一種是利用SELECT語(yǔ)句查看數(shù)據(jù)庫(kù)information_schema下數(shù)據(jù)表triggers中的觸發(fā)器數(shù)據(jù)。利用SHOWTRIGGERS語(yǔ)句查看觸發(fā)器信息的語(yǔ)法格式如下。SHOWTRIGGERS;在MSQL中,觸發(fā)器信息都保存在數(shù)據(jù)庫(kù)infomationschena下的數(shù)據(jù)表triggers中,可以通過(guò)SELECT語(yǔ)句查看該數(shù)據(jù)表獲取觸發(fā)器信息。通過(guò)triggers數(shù)據(jù)表查動(dòng)發(fā)器的語(yǔ)法格式如下。SELECT*FROMinformation_schema.triggers[MHEREtrigger_name=’觸發(fā)器名稱’]在上述語(yǔ)法格式中,可以通過(guò)WHERE子句指定觸發(fā)器的名稱,如果不指定觸發(fā)器名稱,則會(huì)查詢出information_schema數(shù)據(jù)庫(kù)中所有已經(jīng)存在的觸發(fā)器信息。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-9Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)1:創(chuàng)建delete型觸發(fā)器TR3_T1在學(xué)生表Student中創(chuàng)建delete型觸發(fā)器TR3_T1,當(dāng)刪除學(xué)生表Student中學(xué)生時(shí),自動(dòng)刪除成績(jī)表studing中相應(yīng)學(xué)生的選課記錄。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-10Navicat工具中使用SQL語(yǔ)句觸發(fā)器生效子任務(wù)1:創(chuàng)建delete型觸發(fā)器TR3_T1根據(jù)要求,當(dāng)刪除學(xué)生表student中學(xué)生時(shí),觸發(fā)器自動(dòng)觸發(fā),自動(dòng)刪除成績(jī)表studing中相應(yīng)學(xué)生的選課記錄,完成成績(jī)的控制。執(zhí)行以下語(yǔ)句將觸發(fā)該觸發(fā)器。運(yùn)行效果如圖9-10所示。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-11Navicat工具中顯示student表子任務(wù)1:創(chuàng)建delete型觸發(fā)器TR3_T1刪除之后student表和studing表都沒(méi)有20211004。查詢結(jié)果如圖9-11和9-12所示。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-12Navicat工具中顯示studing表圖9-13Navicat工具中使用SQL語(yǔ)句創(chuàng)建新表子任務(wù)2:創(chuàng)建delete型觸發(fā)器TR3_T2創(chuàng)建DELETE型觸發(fā)器TR3_T2,技術(shù)人員想要在刪除學(xué)生信息后,自動(dòng)將刪除的學(xué)生信息添加在其他數(shù)據(jù)表以防后續(xù)需要查詢被刪除的學(xué)生信息,具體操作如下。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-14Navicat工具中使用SQL語(yǔ)句創(chuàng)建觸發(fā)器子任務(wù)2:創(chuàng)建delete型觸發(fā)器TR3_T2接著在學(xué)生表student中創(chuàng)建觸發(fā)器。當(dāng)刪除學(xué)生表的數(shù)據(jù)后,觸發(fā)該觸發(fā)器,并且在觸發(fā)器的觸發(fā)程序中將被刪除的學(xué)生添加到數(shù)據(jù)表new_student中,具體SQL語(yǔ)句及運(yùn)行效果如圖9-14所示。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-15Navicat工具中使用SQL語(yǔ)句刪除記錄子任務(wù)2:創(chuàng)建delete型觸發(fā)器TR3_T2觸發(fā)器創(chuàng)建成功后,會(huì)根據(jù)觸發(fā)時(shí)機(jī)觸發(fā)事件,技術(shù)人員需要?jiǎng)h除員工表學(xué)號(hào)’20211004’中的一條學(xué)生記錄,具體SQL語(yǔ)句及運(yùn)行效果如圖9-15所示。并且想要在刪除操作后查看新表new_studeng中的記錄,以驗(yàn)證觸發(fā)器是否生效,具體SQL語(yǔ)句及運(yùn)行效果如圖9-16所示。三、使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器圖9-16Navicat工具中使用SQL語(yǔ)句查詢記錄刪除觸發(fā)器當(dāng)創(chuàng)建的觸發(fā)器不再符合當(dāng)前需求時(shí),可以將它刪除。刪除觸發(fā)器的操作很簡(jiǎn)單,只需要使用MySQL提供的DROPTRIGGER語(yǔ)句即可。DROPTRIGGER語(yǔ)句的基本語(yǔ)法格式如下。DROPTRIGGER[IFEXISTS][數(shù)據(jù)庫(kù)名.]觸發(fā)器名;在上述語(yǔ)法格式中,利用“數(shù)據(jù)庫(kù)名,觸發(fā)器名”方式可以刪除指定數(shù)據(jù)庫(kù)下的觸發(fā)器,當(dāng)省略“數(shù)據(jù)庫(kù)名.”時(shí),則刪除當(dāng)前選擇的數(shù)據(jù)庫(kù)下的觸發(fā)器。四、使用SQL語(yǔ)句刪除觸發(fā)器子任務(wù)1:使用SQL語(yǔ)句查看觸發(fā)器通過(guò)語(yǔ)句查看數(shù)據(jù)庫(kù)中已經(jīng)存在的觸發(fā)器的信息,可以采用兩種方法。方法1:打開(kāi)如圖9-17所示界面,打開(kāi)“hn”節(jié)點(diǎn),點(diǎn)擊“新建查詢”按鈕,新建查詢窗口,在該窗口中輸入以下語(yǔ)句查看觸發(fā)器。四、使用SQL語(yǔ)句刪除觸發(fā)器圖9-17Navicat工具中使用SQL語(yǔ)句查看觸發(fā)器方法2:打開(kāi)如圖9-18所示界面,打開(kāi)“hn”節(jié)點(diǎn),點(diǎn)擊“新建查詢”按鈕,新建查詢窗口,在該窗口中輸入以下語(yǔ)句通過(guò)WHERE子句指定觸發(fā)器的名稱查看觸發(fā)器。四、使用SQL語(yǔ)句刪除觸發(fā)器圖9-18Navicat工具中使用SQL語(yǔ)句查看觸發(fā)器子任務(wù)2:使用SQL語(yǔ)句刪除觸發(fā)器在一次學(xué)生成績(jī)管理系統(tǒng)升級(jí)之后,技術(shù)人員覺(jué)得觸發(fā)器TR1_T1的使用意義不大,想要?jiǎng)h除學(xué)生成績(jī)管理系統(tǒng)中的觸發(fā)器TR1_T1。具體SQL語(yǔ)句及執(zhí)行結(jié)果如下:步驟:打開(kāi)如圖9-19所示界面,打開(kāi)“hn”節(jié)點(diǎn),點(diǎn)擊“新建查詢”按鈕,新建查詢窗口,在該窗口中輸入以下語(yǔ)句刪除觸發(fā)器。四、使用SQL語(yǔ)句刪除觸發(fā)器圖9-19Navicat工具中使用SQL語(yǔ)句刪除觸發(fā)器上述語(yǔ)句執(zhí)行結(jié)果的信息可以得出,刪除語(yǔ)句成功執(zhí)行,此時(shí)通過(guò)如下語(yǔ)句再次查詢觸發(fā)器。SELECT*FROMinformation_schema.triggersWHEREtrigger_name='TR1_T1'從上述查詢結(jié)果可以驗(yàn)證,觸發(fā)器TR1_T1已經(jīng)從數(shù)據(jù)庫(kù)中成功刪除。除使用DROP

TRIGGER語(yǔ)句刪除觸發(fā)器外,當(dāng)刪除觸發(fā)器關(guān)聯(lián)的數(shù)據(jù)表時(shí),觸發(fā)器也會(huì)同時(shí)被刪除。四、使用SQL語(yǔ)句刪除觸發(fā)器總結(jié)1.能使用SQL語(yǔ)句創(chuàng)建INSERT型觸發(fā)器

2.能使用SQL語(yǔ)句創(chuàng)建UPDATE型觸發(fā)器

3.能使用SQL語(yǔ)句創(chuàng)建DELETE型觸發(fā)器謝謝觀看!項(xiàng)目10學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)安全管理數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用了解用戶與權(quán)限的作用;掌握CREATEUSE創(chuàng)建用戶掌握ALTERUSE設(shè)置密碼掌握GRANT授予用戶權(quán)限本章目標(biāo)學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)提供數(shù)據(jù)共享服務(wù),數(shù)據(jù)共享必然帶來(lái)數(shù)據(jù)庫(kù)的安全性問(wèn)題。為了保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞,可以創(chuàng)建視圖限制用戶數(shù)據(jù)的范圍,創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器增強(qiáng)系統(tǒng)的安全性和可靠性,對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。當(dāng)數(shù)據(jù)庫(kù)被破壞時(shí)通過(guò)備份文件進(jìn)行數(shù)據(jù)庫(kù)的還原,除此之外數(shù)據(jù)的安全性可以通過(guò)設(shè)置用戶權(quán)限等實(shí)現(xiàn)。一、用戶管理1、創(chuàng)建用戶基本語(yǔ)法格式如下:CREATEUSER'username'@'hostname'[IDENTIFIEDBY[PASSWORD]'password'][,'username'@'hostname'[IDENTIFIEDBY[PASSWORD]'password']]....在上述語(yǔ)法格式中,username表示新創(chuàng)建用戶的名稱;hostname表示主機(jī)名;IDENTIFIEDBY用于設(shè)置用戶的密碼;PASSWORD關(guān)鍵字表示使用哈希值設(shè)置密碼,是可選項(xiàng),如果密碼是一個(gè)普通字符串,就不需要使用PASSWORD關(guān)鍵字;password表示用戶登錄時(shí)使用的密碼,需要用單引號(hào)括起來(lái)。CREATEUSER語(yǔ)句可以同時(shí)創(chuàng)建多個(gè)用戶,多個(gè)用戶之間用逗號(hào)分隔。一、用戶管理2、刪除用戶1.使用DROPUSER語(yǔ)句刪除用戶DROPUSER語(yǔ)句與DROPDATABASE語(yǔ)句類似,如果要?jiǎng)h除某個(gè)用戶,只需要在DROPUSER后面指定要?jiǎng)h除的用戶信息即可。語(yǔ)法格式如下。DROPUSER‘username'@'hostname'[,'username'@'hostname'];在上述語(yǔ)法格式中,username表示要?jiǎng)h除的用戶,hostname表示主機(jī)名。DROPUSER語(yǔ)句可以同時(shí)刪除一個(gè)或多個(gè)用戶,多個(gè)用戶之間用逗號(hào)進(jìn)行分隔。值得注意的是,使用DROPUSER語(yǔ)句刪除用戶時(shí),執(zhí)行刪除操作的用戶必須擁有DROPUSER權(quán)限。2.使用DELETE語(yǔ)句刪除用戶DELETE語(yǔ)句不僅可以刪除普通表中的數(shù)據(jù),還可以刪除mysql.user表中的數(shù)據(jù)。使用該語(yǔ)句刪除mysql.user表中的數(shù)據(jù)時(shí),需要指定表名為mysql.user和要?jiǎng)h除的用戶信息。同樣地,在使用DELETE語(yǔ)句時(shí),執(zhí)行刪除操作的用戶必須擁有對(duì)mysql.user表的DELETE權(quán)限,語(yǔ)法格式如下。DELETEFROMmysql.userWHEREhost=‘hostname’ANDuser=‘usernane’;在上述語(yǔ)法格式中,mysql.user參數(shù)指定要操作的表,WHERE指定條件語(yǔ)句。host和user都是mysql.user表的字段,這兩個(gè)字段可以確定唯一的一條記錄。一、用戶管理3、修改用戶密碼方法1:使用mysqladmin命令修改用戶密碼。在MySQL的安裝目錄bin文件夾下有一個(gè)mysqladmin.exe可執(zhí)行程序,它對(duì)應(yīng)的命令mysqladmin通常用于執(zhí)行一些管理性的任務(wù)(如修改用戶密碼),以及顯示服務(wù)器狀態(tài)等。使用mysqladmin命令修改密碼的基本語(yǔ)法格式如下。mysqladmin-uusername[-hhostname]-ppasswordnew_password在上述語(yǔ)法格式中,username表示要修改密碼的用戶名;參數(shù)-h用于指定對(duì)應(yīng)的主機(jī)名,可以省略不寫(xiě),默認(rèn)為localhost;-p后面的password為關(guān)鍵字,用于指定要修改的內(nèi)容為密碼,而不是修改后的密碼;new_password為新設(shè)置的密碼。一、用戶管理3、修改用戶密碼方法2:使用ALTERUSER語(yǔ)句修改用戶密碼,基本語(yǔ)法格式如下。ALTERUSER賬戶名IDENTIFIEDBynew_password;在上述語(yǔ)法格式中,賬戶名包括用戶名和主機(jī)名,new_pasword表示新設(shè)置的密碼。需要注意的是,使用這種方法修改用戶密碼時(shí),要求執(zhí)行修改密碼提作的用戶有修改mysql.user數(shù)據(jù)表的權(quán)限。方式3:使用SET語(yǔ)句修改用戶密碼,基本語(yǔ)法各式如下。SETPASSWORD=new_password;在上述語(yǔ)法格式中,new_password為新設(shè)置的密碼。一、用戶管理3、修改用戶密碼

方法4:使用UPDATE語(yǔ)句修改用戶密碼。這種方法就是通過(guò)UPDATE語(yǔ)句直接修改mysql.user的數(shù)據(jù),需要利用root用戶登錄。修改密碼的基本語(yǔ)法格式如下。UPDATEmysql.userSETauthentication_string=PASSWORD('new_password’)WHEREUser='username'andHost='hostname';在上述語(yǔ)法格式中,new_pasword為新設(shè)置的密碼,usemame為要修改的用戶名hostname為對(duì)應(yīng)的主機(jī)名。使用這種方法修改密碼后,還需要使用FLUSHPRIVILEGES重新加載權(quán)限表。需要注意的是,在MySQL8.0及后續(xù)的版本中已經(jīng)度棄PASSWORD()函數(shù),因此本書(shū)也不推薦使用此種方法修改用戶密碼。一、用戶管理子任務(wù)1:創(chuàng)建用戶使用CREATEUSER語(yǔ)句創(chuàng)建兩個(gè)新用戶,用戶名分別為test1和test2,密碼分別為123和456,并查看新的用戶。圖10-1Navicat工具中使用SQL語(yǔ)句創(chuàng)建用戶一、用戶管理子任務(wù)1:創(chuàng)建用戶打開(kāi)如圖10-2所示界面,使用SELECT語(yǔ)句查詢mysql.user表中的數(shù)據(jù),驗(yàn)證用戶是否創(chuàng)建成功。以查詢用戶test1為例。運(yùn)行效果如圖10-2所示。圖10-2Navicat工具中使用SQL語(yǔ)句查看用戶一、用戶管理子任務(wù)2:刪除用戶使用DROPUSER語(yǔ)句刪除用戶test1。步驟1:打開(kāi)如圖10-3所示界面,打開(kāi)“hn”節(jié)點(diǎn),點(diǎn)擊“新建查詢”按鈕,新建查詢窗口,在該窗口中輸入以下語(yǔ)句。圖10-3Navicat工具中使用SQL語(yǔ)句刪除用戶一、用戶管理子任務(wù)2:刪除用戶打開(kāi)如圖10-4所示界面,上述語(yǔ)句執(zhí)行成功后,可以通過(guò)SELECT語(yǔ)句驗(yàn)證用戶是否被刪除。運(yùn)行效果如圖10-4所示。圖10-4Navicat工具中使用SQL語(yǔ)句查看用戶從運(yùn)行結(jié)果可以得出,mysqluser表中已經(jīng)沒(méi)有用戶test1,說(shuō)明test1用戶已被成功刪除。一、用戶管理子任務(wù)3:修改用戶密碼技術(shù)人員為了方便測(cè)試系統(tǒng)的一些功能,創(chuàng)建了一個(gè)普通用戶作為系統(tǒng)的測(cè)試賬號(hào),該賬號(hào)需要分享給技術(shù)組的其他人員使用。為保證賬號(hào)的安全,一旦技術(shù)組有人員離職,就需要對(duì)該用戶的密碼進(jìn)行修改。圖10-5Navicat工具中使用SQL語(yǔ)句創(chuàng)建用戶一、用戶管理子任務(wù)3:修改用戶密碼當(dāng)組內(nèi)有人員離職時(shí),技術(shù)人員需要修改用戶admin_test的密碼。此次選擇使用ALTERUSER語(yǔ)句修改用戶密碼,修改之前需要先登錄root賬戶。登錄后執(zhí)行的SQL語(yǔ)句及執(zhí)行結(jié)果如下,運(yùn)行效果如圖10-6所示。圖10-6Navicat工具中使用SQL語(yǔ)句查看用戶二、權(quán)限管理1、授予權(quán)限用戶登錄MySQL后,可以對(duì)數(shù)據(jù)進(jìn)行增刪改查的操作,是因?yàn)榈卿浀挠脩魮碛羞@些權(quán)限。MySQL提供了用于為用戶授予權(quán)限的GRANT語(yǔ)句,其基本語(yǔ)法格式如下。GRANT權(quán)限類型[(字段列表)][,權(quán)限類型[(字段列表)]]ON權(quán)限級(jí)別TO'username'@'hostname’[,'username'@'hostname']…[WITHwith_option]在上述語(yǔ)法格式中,各參數(shù)的含義如下。(1)權(quán)限類型:指的是表10-3中的權(quán)限名稱。(2)字段列表:表示權(quán)限設(shè)置到哪些字段上,同時(shí)給多個(gè)字段設(shè)置同一個(gè)權(quán)限時(shí),多個(gè)字段名之間使用逗號(hào)分隔。如果不指定字段,則設(shè)置的權(quán)限作用于整個(gè)表。(3)權(quán)限級(jí)別:指表10-3中包含的權(quán)限級(jí)別,其值可以設(shè)置如下幾種。二、權(quán)限管理1、授予權(quán)限*.*:表示全局級(jí)別的權(quán)限,即授予的權(quán)限適用于所有數(shù)據(jù)庫(kù)和數(shù)據(jù)表。*:如果當(dāng)前未選擇數(shù)據(jù)庫(kù),表示全局級(jí)別的權(quán)限;如果當(dāng)前選擇了數(shù)據(jù)庫(kù),則為當(dāng)前選擇的數(shù)據(jù)庫(kù)授予權(quán)限。數(shù)據(jù)庫(kù)名.*:表示數(shù)據(jù)庫(kù)級(jí)別的權(quán)限,即授子的權(quán)限適用于指定數(shù)據(jù)庫(kù)中的所有表。數(shù)據(jù)庫(kù)名.表名:表示表級(jí)別的權(quán)限。如果不指定將授予權(quán)限的字段,則授予的權(quán)限適用于指定數(shù)據(jù)庫(kù)的指定表中的所有列。(4)TO子句用于指定一個(gè)或多個(gè)用戶。(5)WITH關(guān)鍵字后面的參數(shù)with_option的取值有5個(gè),具體如下。GRANTOPTION:將自己的權(quán)限授予其他用戶。MAX_QUERIES_PER_HOURcount:設(shè)置每小時(shí)最多可以執(zhí)行多少次查詢。NAX_UPDATES_PER_HOURcount:設(shè)置每小時(shí)最多可以執(zhí)行多少次更新。MAX_CONNECHONS_PER_HOURcount:設(shè)置每小時(shí)最大的連接數(shù)量。NAX_UER_CONNECHONS:設(shè)置每個(gè)用戶最多可以同時(shí)建立連接的數(shù)量。二、權(quán)限管理2、查看權(quán)限授權(quán)語(yǔ)句執(zhí)行成功后,可以對(duì)用戶的授予權(quán)限進(jìn)行查詢;其中表權(quán)限可以在mysql.tables_priv中查看,列權(quán)限可以在mysql.columns_priv中查看,有兩種方法,第一種是使用SELECT語(yǔ)句,第二種還可以使用SHOWGRANTS語(yǔ)句查看用戶權(quán)限,其基本語(yǔ)法格式如下:SHOWGRANTSFOR'username'@'hostname';二、權(quán)限管理3.收回權(quán)限為保證數(shù)據(jù)庫(kù)的安全,對(duì)于用戶一些不必要的權(quán)限應(yīng)該及時(shí)收回。MySQL提供了REVOKE語(yǔ)句用于收回指定用戶的指定權(quán)限,其基本語(yǔ)法格式如下。REVOKE權(quán)限類型[(字段列表)][,權(quán)限類型[(字段列表)]]ON權(quán)限級(jí)別FROM‘username'@'hostname'[,'username'@'hostname']…上述語(yǔ)法格式中的權(quán)限類型表示收回的權(quán)限類型,字段列表表示權(quán)限作用的字段。如果不指定字段,則表示作用于整個(gè)數(shù)據(jù)表。當(dāng)用戶擁有的權(quán)限比較多時(shí),使用上述收回方式就比較繁瑣,為此MySQL提供了一次性收回所有權(quán)限的功能。一次性收回用戶所有權(quán)限的語(yǔ)法格式如下。REVOKEALLPRIVILEGES,GRANTOPTIONFROM‘username’@‘hostname’[,‘username’@‘hostname']…二、權(quán)限管理子任務(wù)1:授予權(quán)限技術(shù)人員在使用admin_test用戶測(cè)試系統(tǒng)時(shí),需要為admin_test用戶授予數(shù)據(jù)庫(kù)student_score的學(xué)生信息表student的SELECT權(quán)限,以及對(duì)sno和sname字段的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論