《MySQL數(shù)據(jù)庫應(yīng)用案例教程》651-5(馬潔)教案 第22課 MySQL的權(quán)限與安全_第1頁
《MySQL數(shù)據(jù)庫應(yīng)用案例教程》651-5(馬潔)教案 第22課 MySQL的權(quán)限與安全_第2頁
《MySQL數(shù)據(jù)庫應(yīng)用案例教程》651-5(馬潔)教案 第22課 MySQL的權(quán)限與安全_第3頁
《MySQL數(shù)據(jù)庫應(yīng)用案例教程》651-5(馬潔)教案 第22課 MySQL的權(quán)限與安全_第4頁
《MySQL數(shù)據(jù)庫應(yīng)用案例教程》651-5(馬潔)教案 第22課 MySQL的權(quán)限與安全_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE14PAGE14PAGE13PAGE13

課題MySQL的權(quán)限與安全課時2課時(90min)教學(xué)目標(biāo)知識技能目標(biāo):(1)認(rèn)識權(quán)限表并掌握其用法(2)掌握賬號管理的方法(3)掌握權(quán)限管理的方法素質(zhì)目標(biāo):(1)培養(yǎng)探究意識(2)增強(qiáng)個人信息保護(hù)意識教學(xué)重難點教學(xué)重點:掌握權(quán)限表用法教學(xué)難點:掌握賬號和權(quán)限的管理方法教學(xué)方法案例分析法、問答法、討論法、講授法、實踐法教學(xué)用具電腦、投影儀、多媒體課件、教材教學(xué)設(shè)計第1節(jié)課:→→→傳授新知(38min)第2節(jié)課:→傳授新知(20min)→課堂實訓(xùn)(15min)→課堂小結(jié)(3min)→作業(yè)布置(2min)教學(xué)過程主要教學(xué)內(nèi)容及步驟設(shè)計意圖第一節(jié)課課前任務(wù)【教師】布置課前任務(wù),和學(xué)生負(fù)責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過文旌課堂APP或其他學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識【學(xué)生】完成課前任務(wù)通過課前任務(wù),使學(xué)生預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識,增加學(xué)生的學(xué)習(xí)興趣考勤(2min)【教師】使用文旌課堂APP進(jìn)行簽到【學(xué)生】班干部報請假人員及原因培養(yǎng)學(xué)生的組織紀(jì)律性,掌握學(xué)生的出勤情況問題導(dǎo)入(5min)【教師】提出以下問題:MySQL的存取控制過程是怎樣的?·通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(38min)【教師】通過學(xué)生的回答引入要講的知識,講解MySQL權(quán)限表,以及賬號管理的相關(guān)知識17.1MySQL權(quán)限表17.1.1MySQL權(quán)限系統(tǒng)的工作原理MySQL的存取控制過程是:首先服務(wù)器檢查用戶是否允許連接,假定用戶能連接,服務(wù)器檢查用戶發(fā)出的每個請求,看其是否有足夠的權(quán)限實施它。例如,如果用戶從數(shù)據(jù)庫中的一個表查找某行或從數(shù)據(jù)庫中刪除一個表,服務(wù)器會確定用戶對表有SELECT權(quán)限或?qū)?shù)據(jù)庫有DROP權(quán)限。服務(wù)器在存取控制過程中使用MySQL數(shù)據(jù)庫中的權(quán)限表進(jìn)行權(quán)限判斷。MySQL5.7中存在4個控制權(quán)限的表,分別為user表,db表,tables_priv表和columns_priv表。這些表位于系統(tǒng)數(shù)據(jù)庫mysql中。MySQL權(quán)限表的驗證過程為:?【教師】隨機(jī)邀請學(xué)生回答以下問題:MySQL怎么區(qū)分不同的用戶??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答(1)先通過user表中的host和user兩個字段判斷連接的IP和用戶名是否存在,存在則通過驗證。對于身份認(rèn)證,MySQL是通過IP地址和用戶名聯(lián)合進(jìn)行確認(rèn)。例如,MySQL安裝后默認(rèn)創(chuàng)建的用戶root@localhost表示用戶root只能從本地(localhost)進(jìn)行連接才可以通過認(rèn)證,從其他任何主機(jī)對數(shù)據(jù)庫進(jìn)行的連接都將被拒絕。就是說,同一個用戶,如果來自不同的IP地址,則MySQL將其視為不同的用戶。?【教師】隨機(jī)邀請學(xué)生回答以下問題:身份認(rèn)證之后權(quán)限分配的過程是怎樣的??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答(2)通過身份認(rèn)證后,進(jìn)行權(quán)限分配,按照user,db,tables_priv,columns_priv的順序進(jìn)行驗證。即先檢查全局權(quán)限表user,如果user中對應(yīng)的權(quán)限為Y,則此用戶對所有數(shù)據(jù)庫的權(quán)限都為Y,將不再檢查db,tables_priv和columns_priv;如果為N,則到db表中檢查此用戶對應(yīng)的具體數(shù)據(jù)庫,并得到db中為Y的權(quán)限;如果db中為N,則檢查tables_priv中此數(shù)據(jù)庫對應(yīng)的具體表,取得表中為Y的權(quán)限,依此類推?!緦嵗?7-1】執(zhí)行SQL語句,查看user表中的用戶信息。打開命令窗口,登錄MySQL并選擇數(shù)據(jù)庫mysql,執(zhí)行SQL語句查看user表中的用戶信息。SQL語句及其執(zhí)行結(jié)果如下:mysql>USEmysql;Databasechangedmysql>SELECTuser,hostFROMuser\G***************************1.row***************************user:mysql.syshost:localhost***************************2.row***************************user:roothost:localhost2rowsinset(0.00sec)由查詢結(jié)果可知,默認(rèn)情況下user表中只有兩個用戶,其中一個是root。17.1.2權(quán)限表在權(quán)限存取的過程中,系統(tǒng)最常用到的是系統(tǒng)數(shù)據(jù)庫mysql中的user表和db表,user表用于存放用戶賬號信息以及全局級別(所有數(shù)據(jù)庫)權(quán)限。db表用于存放數(shù)據(jù)庫級別的權(quán)限。user表和db表的定義如表17-1所示。?【教師】通過多媒體展示“user表和db表的定義”表格,介紹相關(guān)知識表17-1user表和db表的定義表名userdb用戶列host(主機(jī)名)hostuser(用戶名)dbuser權(quán)限列select_priv(選擇數(shù)據(jù))select_privinsert_priv(插入數(shù)據(jù))insert_privupdate_priv(更新數(shù)據(jù))update_privdelete_priv(刪除數(shù)據(jù))delete_privcreate_priv(創(chuàng)建新的數(shù)據(jù)庫和表)create_privdrop_priv(刪除現(xiàn)有數(shù)據(jù)庫和表)drop_privreload_priv(重新加載MySQL所用各種內(nèi)部緩存)shutdown_priv(關(guān)閉MySQL服務(wù)器)process_priv(查看用戶進(jìn)程)file_priv(讀寫文件)grant_priv(將自身權(quán)限授予其他用戶)grant_privreferences_priv(某些未來功能的占位符)references_privindex_priv(創(chuàng)建和刪除表索引)index_privalter_priv(重命名和修改表結(jié)構(gòu))alter_privshow_db_priv(查看服務(wù)器上所有數(shù)據(jù)庫名字)super_priv(執(zhí)行某些強(qiáng)大的管理功能)create_tmp_table_priv(創(chuàng)建臨時表)create_tmp_table_privlock_tables_priv(阻止對表的訪問/修改)lock_tables_privexecute_priv(執(zhí)行存儲過程)execute_privrepl_slave_priv(讀取用于維護(hù)復(fù)制數(shù)據(jù)庫環(huán)境的日志文件)repl_client_priv(確定復(fù)制從服務(wù)器和主服務(wù)器的位置)create_view_priv(確定用戶是否可以創(chuàng)建視圖)create_view_privshow_view_priv(查看視圖或了解視圖如何執(zhí)行)show_view_privcreate_routine_priv(更改或放棄存儲過程和函數(shù))create_routine_privalter_routine_priv(修改或刪除存儲函數(shù)及函數(shù))alter_routine_privcreate_user_priv(是否可以執(zhí)行CREATEUSER命令)event_priv(能否創(chuàng)建、修改和刪除事件)event_privtrigger_priv(能否創(chuàng)建和刪除觸發(fā)器)trigger_privcreate_tablespace_priv(能否創(chuàng)建表空間)安全列ssl_typessl_cipherx509_issuerx509_subjectpluginauthentication_string(賬號密碼)資源

控制列max_questions(用戶每小時允許執(zhí)行的查詢操作次數(shù))max_updates(用戶每小時允許執(zhí)行的更新操作次數(shù))max_connections(用戶每小時允許執(zhí)行的連接操作次數(shù))max_user_connections(用戶允許同時建立的連接次數(shù))MySQL5.7新增列password_expired(密碼自動失效)password_last_changed(密碼最后一次修改時間)password_lifetime(密碼自動失效時間)account_locked(用戶賬號鎖定)【提示】如要查看user表中的字段,可以像查看普通表那樣使用SELECT語句:SELECT*FROMmysql.userWHEREuser='root'ANDhost='localhost'\G;user表是MySQL中最重要的權(quán)限表,用于記錄允許連接到服務(wù)器的賬號信息。其中的權(quán)限是全局級的,如果用戶在該表中被授予了DELETE權(quán)限,則該用戶可以刪除MySQL服務(wù)器上所有數(shù)據(jù)庫中的任何記錄。user表中的列可以分為4部分:用戶列、權(quán)限列、安全列和資源控制列,通常使用最多的是用戶列和權(quán)限列。1.用戶列用戶列包括host和user,表示主機(jī)名和用戶名,并且這兩個字段是表的聯(lián)合主鍵。在用戶與服務(wù)器建立連接時,輸入的主機(jī)名和用戶名必須匹配user表中對應(yīng)的字段,只有2個值都匹配才允許建立連接。2.權(quán)限列權(quán)限列的字段決定了用戶的權(quán)限,描述了在全局范圍內(nèi)允許對數(shù)據(jù)庫進(jìn)行的操作。包括查詢和修改等用于數(shù)據(jù)庫操作的普通權(quán)限,也包括關(guān)閉服務(wù)器和加載用戶等管理權(quán)限。這些字段值的類型為ENUM,可取值為Y和N,Y表示用戶有對應(yīng)的權(quán)限;N表示用戶沒有對應(yīng)的權(quán)限。權(quán)限列中所有字段的值默認(rèn)都為N,如果要修改權(quán)限,可以使用GRANT語句或UPDATE語句修改user表中相應(yīng)字段的值。3.安全列安全列有6個字段,其中兩個是ssl相關(guān)的,兩個是x509相關(guān)的。ssl用于加密,x509標(biāo)準(zhǔn)用于標(biāo)注用戶,plugin字段標(biāo)識用于驗證用戶身份。如果該字段為空,服務(wù)器使用內(nèi)建授權(quán)驗證機(jī)制驗證用戶身份。authentication_string字段為5.7版本中新增的用于代替password,表示密碼的字段。4.資源控制列資源控制列的字段用于限制用戶使用的資源,包括以max開頭的4個字段。如果1小時內(nèi)用戶查詢或連接數(shù)量超過資源控制限制,該用戶將被鎖定,直到1小時后才可以再次執(zhí)行相應(yīng)操作。除上述4種類型的字段外,MySQL5.7還新增了4個字段,分別用于控制密碼失效、最后一次修改時間、失效時間,及賬號鎖定。17.2賬號管理?【教師】組織學(xué)生掃碼觀看“賬號管理”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解MySQL提供許多命令用于管理用戶賬號,這些命令可用于管理包括登錄和退出MySQL服務(wù)器、創(chuàng)建和刪除用戶、密碼和權(quán)限管理等內(nèi)容。MySQL數(shù)據(jù)庫的安全性需要通過賬號管理來保證。17.2.1創(chuàng)建賬號在MySQL中,必須要有相應(yīng)的權(quán)限來執(zhí)行創(chuàng)建賬號的操作。常用創(chuàng)建賬號的方式有兩種:一種是使用GRANT語句;另一種是使用CREATEUSER語句。一般推薦使用GRANT語句,因為操作簡單,出錯幾率少。1.使用GRANT語句創(chuàng)建新用戶使用GRANT語句不僅可以創(chuàng)建新用戶,還可以在創(chuàng)建的同時對用戶授權(quán)。另外,使用GRANT語句還可以指定賬號的其他特點,如使用安全連接、限制使用服務(wù)器資源等。需要注意的是,使用GRANT語句創(chuàng)建新用戶時必須有GRANT權(quán)限。GRANT語句的基本語法格式如下:GRANTpriv_type[,priv_type...]ONdb.tableTOuser@host[IDENTIFIEDBY'password'][,user[IDENTIFIEDBY'password']][WITHwith_option[with_option]...];其中,priv_type表示賦予用戶的權(quán)限類型,比如SELECT,UPDATE等,allprivileges為所有權(quán)限;db.table表示用戶的權(quán)限所作用的數(shù)據(jù)庫或數(shù)據(jù)庫中的表,*.*表示所有數(shù)據(jù)庫;user表示用戶名;host表示主機(jī)名,其中%匹配任何主機(jī)名;IDENTIFIEDBY關(guān)鍵字用于設(shè)置密碼;password表示用戶密碼;[WITHwith_option[with_option]...]為可選參數(shù),表示對新創(chuàng)建的用戶賦予GRANT權(quán)限,即該用戶可以對其他用戶賦予權(quán)限?!咎崾尽咳绻恢付ㄓ脩裘糠謚ser,不指定主機(jī)名,則主機(jī)名部分默認(rèn)為%,表示對所有主機(jī)開放權(quán)限;如果指定用戶登錄不需要密碼,可以省略IDENTIFIEDBY部分?!緦嵗?7-2】使用GRANT語句創(chuàng)建一個新用戶lucy,密碼為lucy123,并授予用戶對所有數(shù)據(jù)庫的SELECT和UPDATE權(quán)限。GRANT語句及其執(zhí)行結(jié)果如下:mysql>GRANTSELECT,UPDATEON*.*TO'lucy'@'localhost'IDENTIFIEDBY'lucy123';QueryOK,0rowsaffected,1warning(0.07sec)顯示執(zhí)行成功,使用SELECT語句查詢用戶lucy的權(quán)限:mysql>SELECThost,user,select_priv,update_privFROMmysql.userWHEREuser='lucy';+++++|host|user|select_priv|update_priv|+++++|localhost|lucy|Y|Y|+++++1rowinset(0.00sec)user表中的user和host字段區(qū)分大小寫,在查詢時要指定正確的用戶名和主機(jī)名。2.使用CREATEUSER語句創(chuàng)建新用戶要使用CREATEUSER語句創(chuàng)建用戶,必須有全局的CREATEUSER權(quán)限,或MySQL數(shù)據(jù)庫的INSERT權(quán)限。每添加一個用戶,CREATEUSER語句會在mysql.user表中添加一條新記錄。CREATEUSER語句的基本語法格式如下:CREATEUSERuser@host[IDENTIFIEDBY'password'];其中各參數(shù)的意義與GRANT語句中相同。使用CREATEUSER語句創(chuàng)建的用戶沒有任何權(quán)限,還需要使用GRANT語句賦予其權(quán)限?!緦嵗?7-3】使用CREATEUSER語句創(chuàng)建一個新用戶lily,主機(jī)名為localhost,密碼為lily123。CREATEUSER語句及其執(zhí)行結(jié)果如下:mysql>CREATEUSERlily@localhostIDENTIFIEDBY'lily123';QueryOK,0rowsaffected(0.02sec)顯示執(zhí)行成功,使用SELECT語句查詢用戶lily的權(quán)限:mysql>SELECThost,user,select_priv,update_privFROMmysql.userWHEREuser='lily';+++++|host|user|select_priv|update_priv|+++++|localhost|lily|N|N|+++++1rowinset(0.00sec)可以看出,用戶lily的查詢和更新權(quán)限值均為N,表示該用戶沒有這些權(quán)限,17.3.3節(jié)將會詳細(xì)介紹為用戶授權(quán)的方法。17.2.2刪除賬號在MySQL中,可以使用DROPUSER語句刪除用戶。其基本語法格式如下:DROPUSER'user'@'host'[,'user'@'host'];DROPUSER語句可以一次刪除一個或多個用戶。要使用該語句,必須擁有MySQL數(shù)據(jù)庫的全局CREATEUSER權(quán)限或DELETE權(quán)限?!緦嵗?7-4】使用DROPUSER語句刪除用戶名為lily,主機(jī)名為localhost的用戶。DROPUSER語句及其執(zhí)行結(jié)果如下:mysql>DROPuser'lily'@'localhost';QueryOK,0rowsaffected(0.03sec)可以看到語句執(zhí)行成功,使用SELECT語句查看執(zhí)行結(jié)果:mysql>SELECThost,userFROMmysql.user;+++|host|user|+++|localhost|lucy||localhost|mysql.sys||localhost|root|+++3rowsinset(0.00sec)可以看出,user表中已經(jīng)沒有用戶名為lily,主機(jī)名為localhost的賬號,該賬號已被刪除。17.2.3root用戶修改自身密碼?【教師】組織學(xué)生掃碼觀看“修改密碼”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解由于root用戶擁有很高的權(quán)限,其安全對于保證MySQL的安全非常重要。修改root用戶密碼的方式有多種,本節(jié)簡單介紹幾種比較常用的方法。1.修改MySQL數(shù)據(jù)庫的user表由于所有賬號信息都保存在user表中,因此可以通過修改user表中的密碼字段值來改變root用戶的密碼。使用root用戶登錄MySQL服務(wù)器后,可以執(zhí)行以下UPDATE語句修改其登錄密碼:UPDATEmysql.userSETauthentication_string=PASSWORD('newpwd')WHEREuser='root'ANDhost='localhost';PASSWORD()函數(shù)用于加密用戶密碼,newpwd指要為用戶設(shè)置的新密碼。執(zhí)行該語句后,還要執(zhí)行FLUSHPRIVILEGES;語句重新加載用戶權(quán)限?!緦嵗?7-5】使用UPDATE語句將root用戶的密碼修改為root123。UPDATE語句及其執(zhí)行結(jié)果如下:mysql>UPDATEmysql.userSETauthentication_string=PASSWORD('root123')WHEREuser='root'ANDhost='localhost';QueryOK,1rowaffected,1warning(0.06sec)Rowsmatched:1Changed:1Warnings:1執(zhí)行FLUSHPRIVILEGES;語句,重新加載用戶權(quán)限。mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.11sec)執(zhí)行完UPDATE語句后,root用戶密碼被成功修改。使用FLUSHPRIVILEGES;語句重新加載用戶權(quán)限后,就可以使用新密碼登錄MySQL了?!咎崾尽吭谥暗陌姹局?,密碼字段的字段名是password,5.7版本改為了authentication_string。2.使用mysqladmin命令修改密碼使用mysqladmin命令修改root用戶密碼的基本語法形式如下:mysqladmin-uusername-hlocalhost-ppassword"newpwd"username為要修改密碼的用戶名,此處指定為root用戶;參數(shù)-h指定要修改的服務(wù)器地址,可以不寫,默認(rèn)為localhost;-p表示輸入當(dāng)前密碼;password為關(guān)鍵字,后面雙引號中的內(nèi)容newpwd為要設(shè)置的新密碼?!緦嵗?7-6】使用mysqladmin命令將root用戶的密碼修改為123456。mysqladmin命令及其執(zhí)行結(jié)果如下:C:\Users\ccy>mysqladmin-uroot-hlocalhost-ppassword"123456"Enterpassword:*******按照要求輸入root用戶原來的密碼,執(zhí)行完畢后,新密碼即被設(shè)定完成。下次登錄MySQL就要使用新密碼了。3.使用SET語句修改root用戶密碼使用SET語句可以重新設(shè)置自身或其他用戶的登錄密碼。修改自身登錄密碼的語法結(jié)構(gòu)如下:SETPASSWORD=PASSWORD("newpwd");新密碼必須使用PASSWORD()函數(shù)加密?!緦嵗?7-7】使用SET語句將root用戶的密碼修改為root123。使用root用戶登錄MySQL服務(wù)器后,執(zhí)行SET語句,結(jié)果如下:mysql>SETPASSWORD=PASSWORD("root123");QueryOK,0rowsaffected,1warning(0.04sec)SET語句執(zhí)行成功后,為使設(shè)置生效,需要重啟MySQL或執(zhí)行FLUSHPRIVILEGES;語句刷新權(quán)限,重新加載權(quán)限表。執(zhí)行結(jié)果如下:mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.04sec)下次使用root用戶登錄MySQL時,便需要使用新密碼了。17.2.4root用戶修改普通用戶密碼使用root用戶不僅可以修改自身密碼,還可以修改普通用戶的密碼。使用root用戶修改普通用戶密碼的方法有多種,本節(jié)簡單介紹幾種常用方法。1.使用SET語句修改普通用戶密碼使用SET語句修改普通用戶密碼的語法格式如下:SETPASSWORDFOR'user'@'host'=PASSWORD('newpwd');如果是普通用戶修改自身密碼,則可以省略FOR子句:SETPASSWORD=PASSWORD('newpwd');【實例17-8】使用SET語句將lucy用戶的密碼修改為123456。使用root用戶登錄MySQL服務(wù)器后,執(zhí)行SET語句,結(jié)果如下:mysql>SETPASSWORDFOR'lucy'@'localhost'=PASSWORD('123456');QueryOK,0rowsaffected,1warning(0.02sec)SET語句執(zhí)行成功后,lucy用戶的密碼被修改為123456。2.使用UPDATE語句修改普通用戶密碼在使用root用戶登錄MySQL服務(wù)器后,可以通過執(zhí)行UPDATE語句修改mysql數(shù)據(jù)庫中user表的authentication_string字段值,來修改普通用戶的密碼。使用UPDATE語句修改普通用戶密碼的基本語法格式如下:UPDATEmysql.userSETauthentication_string=PASSWORD("newpwd")WHEREuser="username"ANDhost="hostname";PASSWORD()函數(shù)用于加密用戶密碼。執(zhí)行該語句后,需要執(zhí)行FLUSHPRIVILEGES;語句刷新權(quán)限,重新加載權(quán)限表?!緦嵗?7-9】使用UPDATE語句將lucy用戶的密碼修改為lucy123456。使用root用戶登錄MySQL服務(wù)器后,執(zhí)行UPDATE語句,結(jié)果如下:mysql>UPDATEmysql.userSETauthentication_string=PASSWORD("lucy123456")WHEREuser="lucy"ANDhost="localhost";QueryOK,1rowaffected,1warning(0.07sec)Rowsmatched:1Changed:1Warnings:1UPDATE語句執(zhí)行成功后,需要執(zhí)行FLUSHPRIVILEGES;語句刷新權(quán)限,重新加載權(quán)限表。執(zhí)行結(jié)果如下:mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.03sec)3.使用GRANT語句修改普通用戶密碼除前面介紹的兩種方法外,還可以使用GRANT語句指定某個賬號的密碼,而不影響賬號當(dāng)前權(quán)限。只有擁有GRANT權(quán)限,才能使用GRANT語句修改密碼。使用GRANT語句修改普通用戶密碼的基本語法格式如下:GRANTUSAGEON*.*TO'username'@'hostname'IDENTIFIEDBY'newpwd';【實例17-10】使用GRANT語句將lucy用戶的密碼修改為lucy123。使用root用戶登錄MySQL服務(wù)器后,執(zhí)行GRANT語句,結(jié)果如下:mysql>GRANTUSAGEON*.*TO'lucy'@'localhost'IDENTIFIEDBY'lucy123';QueryOK,0rowsaffected,1warning(0.04sec)執(zhí)行完GRANT語句后,lucy用戶的密碼被修改為lucy123。下次即可使用新密碼登錄MySQL服務(wù)器?!咎崾尽吭谑褂肎RANT語句或mysqladmin命令修改用戶密碼時,密碼均會自動加密,不需要使用PASSWORD()函數(shù)。17.2.5普通用戶修改密碼普通用戶登錄MySQL服務(wù)器后,可以使用SET語句設(shè)置自身密碼?;菊Z法格式如下:SETPASSWORD=PASSWORD('newpwd');【實例17-11】用戶lucy使用SET語句將自身密碼修改為lucy123456。執(zhí)行SQL語句,使用用戶lucy登錄MySQL服務(wù)器:C:\Users\ccy>mysql-hlocalhost-ulucy-pEnterpassword:*******執(zhí)行SET語句,修改lucy用戶自身密碼,結(jié)果如下:mysql>SETPASSWORD=PASSWORD('lucy123456');QueryOK,0rowsaffected,1warning(0.02sec)成功執(zhí)行SET語句后,lucy用戶的密碼被設(shè)置為lucy123456,下次可以使用新密碼登錄MySQL服務(wù)器。17.2.6root用戶密碼丟失的解決方法對于root用戶密碼丟失這種問題,可以通過特殊方法登錄MySQL服務(wù)器,然后在root用戶下重新設(shè)置登錄密碼。下面通過實例詳細(xì)介紹具體方法?!緦嵗?7-12】在忘記root用戶密碼的情況下,重新設(shè)置其密碼為123456。步驟

1打開“管理員:命令提示符”窗口,執(zhí)行netstopmysql命令,停止MySQL服務(wù)器。步驟2接著在命令窗口中執(zhí)行mysqld--skip-grant-tables命令啟動MySQL服務(wù):mysqld--defaults-file="F:\mysql-5.7.18-winx64\my.ini"--skip-grant-tables此處的路徑F:\mysql-5.7.18-winx64\my.ini為MySQL實際安裝路徑,讀者可根據(jù)實際情況修改。步驟3打開“命令提示符”窗口,執(zhí)行mysql-uroot-p命令,在提示輸入密碼時直接回車,不用輸入密碼。mysql-uroot-p……(詳見教材)【學(xué)生】聆聽、思考、記錄通過教師的講解和演示,使學(xué)生了解MySQL權(quán)限表,以及賬號管理的相關(guān)知識第二節(jié)課問題導(dǎo)入(5min)【教師】提出以下問題:如何合理地將權(quán)限表中的不同權(quán)限分配給不同用戶?【學(xué)生】思考、舉手回答通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(20min)【教師】通過學(xué)生的回答引入新知,介紹MySQL權(quán)限管理的相關(guān)知識17.3MySQL權(quán)限管理在認(rèn)識了權(quán)限表,并了解了賬號管理的相關(guān)知識后,本節(jié)學(xué)習(xí)如何合理地將權(quán)限表中的不同權(quán)限分配給不同用戶,也就是MySQL權(quán)限管理。17.3.1MySQL權(quán)限介紹MySQL賬號的權(quán)限信息存儲在4個控制權(quán)限的權(quán)限表中。在MySQL啟動時,服務(wù)器將這些信息讀入內(nèi)存。MySQL支持的權(quán)限如表17-2所示。?【教師】通過多媒體展示“MySQL支持的權(quán)限”表格,介紹相關(guān)知識表17-2MySQL支持的權(quán)限權(quán)限權(quán)限范圍權(quán)限說明CREATE數(shù)據(jù)庫、表或索引創(chuàng)建數(shù)據(jù)庫、表或索引的權(quán)限D(zhuǎn)ROP數(shù)據(jù)庫、表或視圖刪除數(shù)據(jù)庫、表或視圖的權(quán)限GRANTOPTION數(shù)據(jù)庫、表或存儲過程賦予權(quán)限選項REFERENCES數(shù)據(jù)庫或表EVENT數(shù)據(jù)庫在事件調(diào)度里創(chuàng)建、更改、刪除和查看事件ALTER表更改表,比如添加字段、索引等DELETE表刪除數(shù)據(jù)權(quán)限INDEX表索引權(quán)限INSERT表插入數(shù)據(jù)權(quán)限SELECT表或列查詢權(quán)限UPDATE表或列更新權(quán)限CREATETEMPORARYTABLES表創(chuàng)建臨時表權(quán)限LOCKTABLES表鎖表權(quán)限TRIGGER表創(chuàng)建觸發(fā)器權(quán)限CREATEVIEW視圖創(chuàng)建視圖的權(quán)限SHOWVIEW視圖顯示視圖的權(quán)限ALTERROUTINE存儲過程和函數(shù)更改存儲過程和函數(shù)的權(quán)限CREATEROUTINE存儲過程和函數(shù)創(chuàng)建存儲過程和函數(shù)的權(quán)限EXECUTE存儲過程和函數(shù)執(zhí)行存儲過程的權(quán)限FILE訪問服務(wù)器上的文件文件訪問權(quán)限CREATEUSER服務(wù)器管理創(chuàng)建用戶權(quán)限PROCESS存儲過程和函數(shù)查看進(jìn)程權(quán)限RELOAD服務(wù)器管理執(zhí)行flush-hosts,flush-logs,flush-privileges,refresh和reload等權(quán)限REPLICATIONCLIENT服務(wù)器管理復(fù)制權(quán)限REPLICATIONSLAVE服務(wù)器管理復(fù)制權(quán)限SHOWDATABASES服務(wù)器管理查看數(shù)據(jù)庫權(quán)限SHUTDOWN服務(wù)器管理關(guān)閉數(shù)據(jù)庫權(quán)限SUPER服務(wù)器管理執(zhí)行kill線程權(quán)限?【教師】隨機(jī)邀請學(xué)生回答以下問題:MySQL中的權(quán)限有幾個級別??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答MySQL中的權(quán)限,根據(jù)其操作對象的不同,可以分為4個級別。全局性管理權(quán)限:該類權(quán)限主要是對服務(wù)器進(jìn)行管理,作用于整個給定服務(wù)器中的所有數(shù)據(jù)庫,前面GRANT語句中的*.*就代表所有數(shù)據(jù)庫的權(quán)限。這些權(quán)限存儲在mysql.user表中,決定了來自哪些主機(jī)的哪些用戶可以訪問數(shù)據(jù)庫,如果有全局權(quán)限則意味著對所有數(shù)據(jù)庫都有此權(quán)限。數(shù)據(jù)庫級別權(quán)限:該類權(quán)限適用于一個給定數(shù)據(jù)庫中的所有目標(biāo),主要用于控制對指定數(shù)據(jù)庫進(jìn)行的操作。這些權(quán)限存儲在mysql.db表中,決定了來自哪些主機(jī)的哪些用戶可以訪問此數(shù)據(jù)庫。數(shù)據(jù)庫對象級別權(quán)限:該類權(quán)限作用于指定的數(shù)據(jù)庫對象(如表、視圖等)或所有數(shù)據(jù)庫對象上。這些權(quán)限存儲在mysql.tables_priv表中,決定了來自哪些主機(jī)的哪些用戶可以訪問此數(shù)據(jù)庫的這個表。列級別權(quán)限:該類權(quán)限作用于一個給定表中的單一列,這些權(quán)限存儲在mysql.Columns_priv表中,決定了來自哪些主機(jī)的哪些用戶可以訪問此數(shù)據(jù)庫中這個表的這個字段。17.3.2查看賬號權(quán)限創(chuàng)建好賬號后,可以使用SHOWGRANTS語句查看賬號的權(quán)限信息,其基本語法格式如下:SHOWGRANTSFOR'user'@'host';其中user表示登錄用戶名,host表示登錄的主機(jī)名或IP地址。在使用該語句時,指定的用戶名和主機(jī)名都要用單引號引起來,并在兩個名字中間使用@符號連接?!緦嵗?7-13】使用SHOWGRANTS語句查看用戶lucy的權(quán)限信息。打開命令窗口,登錄MySQL并執(zhí)行SHOWGRANTS語句。語句及其執(zhí)行結(jié)果如下:mysql>SHOWGRANTSFOR'lucy'@'localhost';++|Grantsforlucy@localhost|++|GRANTSELECT,UPDATEON*.*TO'lucy'@'localhost'|++1rowinset(0.01sec)返回結(jié)果的第1行顯示了user表中的賬號信息;下面的行顯示了用戶被授予的權(quán)限,GRANTSELECT,UPDATEON表示用戶被授予了SELECT和UPDATE權(quán)限;*.*表示被授予的權(quán)限作用于所有數(shù)據(jù)庫。GRANT可以顯示全局級和非全局級權(quán)限的詳細(xì)信息,如果表或列層級的權(quán)限被授予用戶,它們也能在結(jié)果中顯示。除上述方法外,也可以使用SELECT語句查看權(quán)限表中各權(quán)限字段值來確定用戶的權(quán)限信息,其基本語法格式如下:SELECTprivileges_listFROMmysql.userWHEREuser='username'ANDhost='hostname';其中的privileges_list為想要查看的權(quán)限字段,可以為select_priv,insert_priv等,各字段之間使用逗號隔開。17.3.3給賬號授權(quán)給賬號授權(quán)就是將某個權(quán)限授予某個用戶。合理的授權(quán)可以保證數(shù)據(jù)庫的安全。在MySQL中使用GRANT語句為賬號授權(quán),其基本語法格式如下:GRANTpriv_type[,priv_type...]ONdb.tableTOuser@host[WITHwith_option[with_option]...];同創(chuàng)建賬號時一樣,priv_type表示賦予用戶的權(quán)限類型,比如SELECT,UPDATE等;db.table表示用戶的權(quán)限所作用的數(shù)據(jù)庫中的表,*.*表示所有數(shù)據(jù)庫的所有表;user表示用戶名;host表示主機(jī)名;[WITHwith_option[with_option]...]為可選參數(shù),除了可以對新創(chuàng)建的用戶賦予GRANT權(quán)限外,其可取值還有4個,用于賬號資源限制,各值及其意義分別如下:MAX_QUERIES_PER_HOURcount:設(shè)置每小時可以執(zhí)行count次查詢。MAX_UPDATES_PER_HOURcount:設(shè)置每小時可以執(zhí)行count次更新。MAX_CONNECTIONS_PER_HOURcount:設(shè)置每小時可以建立count個連接。MAX_USER_CONNECTIONScount:設(shè)置單個用戶可以同時建立count個連接?!緦嵗?7-14】使用GRANT語句為用戶lucy授予對所有數(shù)據(jù)庫的INSERT權(quán)限。打開命令窗口,登錄MySQL并執(zhí)行GRANT語句。語句及其執(zhí)行結(jié)果如下:mysql>GRANTINSERTON*.*TO'lucy'@'localhost';QueryOK,0rowsaffected(0.23sec)結(jié)果顯示執(zhí)行成功,使用SELECT語句查詢用戶lucy的權(quán)限:mysql>SELECThost,user,insert_priv,select_priv,update_privFROMmysql.userWHEREuser='lucy';++++++|host|user|insert_priv|select_priv|update_priv|++++++|localhost|lucy|Y|Y|Y|++++++1rowinset(0.00sec)查詢結(jié)果顯示,用戶lucy除具有創(chuàng)建時被授予的SELECT和UPDATE權(quán)限外,同時也被授予了INSERT權(quán)限,其相應(yīng)字段的值均為Y。17.3.4收回權(quán)限收回權(quán)限就是取消用戶已有的某些權(quán)限。收回用戶不必要的權(quán)限可以在一定程度上保證系統(tǒng)的安全。MySQL中使用REVOKE語句取消用戶權(quán)限。取消用戶權(quán)限后,用戶賬號的記錄將從db,tables_priv和columns_priv表中刪除,但是用戶賬號記錄依然保存在user表中(可以使用DROPUSER語句刪除user表中的賬號記錄)。REVOKE語句的基本語法格式如下:REVOKEpriv_type[,priv_type]...ONdb.tableFROM'user'@'host'[,'user'@'host'...]該語句收回指定的權(quán)限,其中priv_type參數(shù)表示權(quán)限類型;db.table表示從哪個數(shù)據(jù)庫哪個表上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論