MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元7 用戶管理_第1頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元7 用戶管理_第2頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元7 用戶管理_第3頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元7 用戶管理_第4頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元7 用戶管理_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單元7MySQL用戶管理《MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(慕課版)》學(xué)習(xí)內(nèi)容任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶

2任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限任務(wù)4卸載MySQL任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶7.1.1了解MySQL的權(quán)限表

MySQL在安裝時會自動創(chuàng)建一個名為mysql的系統(tǒng)數(shù)據(jù)庫,它保存了數(shù)據(jù)庫的賬戶信息、權(quán)限信息、存儲過程和時區(qū)等信息。

mysql>showdatabases;mysql>usemysql;mysql>showtables;執(zhí)行SHOWTABLES語句可以查看當(dāng)前數(shù)據(jù)庫下存在的所有表,MySQL5.7.20版本中包含31張表,用戶權(quán)限信息被分別存儲在其中的user、db、host、tables_priv、columns_priv和procs_priv表中。在MySQL啟動時,服務(wù)器將這些表中權(quán)限信息讀入內(nèi)存。當(dāng)用戶登錄系統(tǒng)后,MySQL數(shù)據(jù)庫系統(tǒng)會根據(jù)這些表的內(nèi)容為每個用戶賦予相應(yīng)的權(quán)限。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶mysql>descuser;mysql數(shù)據(jù)庫中的user表是MySQL中最重要的一個權(quán)限表,用來記錄允許連接到服務(wù)器的用戶信息,包括用戶名稱、主機(jī)名、密碼和操作權(quán)限等。使用descuser語句可以查看這些字段,它們可以分為4類,即用戶字段、權(quán)限字段、安全字段和資源控制字段。1.user表

任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶User表中的host、user和pssword字段都屬于用戶字段,存儲了用戶連接MySQL數(shù)據(jù)庫時需要輸入的信息。host表示主機(jī)名或主機(jī)的IP地址(即用戶連接MySQL時所用主機(jī)的名字)、user表示用戶名、authentication_string表示密碼字段。用戶登錄時,如果這3個字段同時匹配,MySQL數(shù)據(jù)庫系統(tǒng)才會允許其登錄。(1)用戶字段MySQL5.7版本不再使用Password來作為密碼字段。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶可以看出,user字段的值有如下3個。①mysql.sys:用于sysschema中對象的定義。使用mysql.sys可避免數(shù)據(jù)庫管理員重命名或者刪除root用戶時發(fā)生問題。該用戶已被鎖定,客戶端無法連接。②mysql.session:用于插件內(nèi)部訪問服務(wù)器。該用戶已被鎖定,客戶端無法連接。③root:用于管理。該用戶擁有所有權(quán)限,可執(zhí)行任何操作。host、user和password這3個字段決定了用戶能否登錄,用戶登錄時,會先判斷這3個字段的值是否同時匹配,若是,MySQL數(shù)據(jù)庫系統(tǒng)才會允許用戶登錄。【例題7.1】使用select語句查看user表中的所有用戶。mysql>selecthost,user,authentication_stringfromuser;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶user表中以_priv結(jié)尾的字段都是權(quán)限字段,如表7-1所示。權(quán)限字段決定了用戶的權(quán)限,用來描述在全局范圍內(nèi)決定是否允許對數(shù)據(jù)和數(shù)據(jù)庫進(jìn)行操作。(2)權(quán)限字段權(quán)限字段值的數(shù)據(jù)類型為ENUM,可取的值只有Y和N,Y表示用戶有對應(yīng)的權(quán)限,N表示用戶沒有對應(yīng)的權(quán)限。從安全角度考慮,這些字段的默認(rèn)值都為N。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-1user表的權(quán)限字段及相關(guān)介紹屬性名對應(yīng)權(quán)限字段說明select_privSELECT允許使用SELECT語句檢索數(shù)據(jù)insert_privINSERT允許使用INSERT語句插入數(shù)據(jù)update_privUPDATE允許使用UPDATE語句修改現(xiàn)有數(shù)據(jù)delete_privDELETE允許使用DELETE語句從表中刪除現(xiàn)有數(shù)據(jù)create_privCREATE允許創(chuàng)建新的數(shù)據(jù)庫和表,但是不允許創(chuàng)建索引drop_privDROP允許刪除現(xiàn)有的數(shù)據(jù)庫和表,但是不允許刪除索引reload_privRELOAD允許執(zhí)行大量的服務(wù)器管理操作,包括日志、權(quán)限、主機(jī)、查詢和表shutdown_privSHUTDOWN允許關(guān)閉MySQL服務(wù)器process_privPROCESS允許使用SHOWPROCESSLIST語句查看服務(wù)器內(nèi)正在運(yùn)行的線程(進(jìn)程)的信息file_privFILE允許加載服務(wù)器主機(jī)上的文件grant_privGRANT允許將已經(jīng)授予某用戶的權(quán)限再授予其他用戶references_privREFERENCES目前并沒有多大的作用index_privINDEX允許創(chuàng)建和刪除表的索引任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-1user表的權(quán)限字段及相關(guān)介紹屬性名對應(yīng)權(quán)限字段說明alter_pivALTER允許重命名和修改表的結(jié)構(gòu)show_db_privSHOWDATABASES允許查看所有的數(shù)據(jù)庫super_privSUPER允許使用某些強(qiáng)大的管理功能create_tmp_table_privCREATETEMPORARYTABLES允許創(chuàng)建臨時表lock_tables_privLOCAKTABLES允許使用LOCKTABLES語句鎖定表execute_privEXECUTE允許執(zhí)行存儲過程和自定義函數(shù)repl_slave_privREPLICATIONSLAVE允許讀取用戶維護(hù)、復(fù)制數(shù)據(jù)庫環(huán)境的二進(jìn)制日志文件repl_client_privREPLICATIONCLIENT允許從服務(wù)器和主服務(wù)器的位置復(fù)制create_view_privCREATEVIEW允許創(chuàng)建視圖show_view_privSHOWVIEW允許查看視圖create_routine_privCREATEROUTINE允許創(chuàng)建存儲過程或自定義函數(shù)alter_routine_privALTERROUTINE允許修改存儲過程或自定義函數(shù)create_user_privCREATEUSER允許執(zhí)行CREATEUSER語句創(chuàng)建用戶eventprivCREATE/DROPEVENT允許創(chuàng)建、修改和刪除事件trigger_privCREATE/DROPTRIGGER允許創(chuàng)建和刪除觸發(fā)器任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶上述輸出結(jié)果表示,當(dāng)前主機(jī)的root用戶具有SELECT、INSERT和UPDATE的權(quán)限。在上述的所有權(quán)限字段中,每一個權(quán)限以一個單獨(dú)的列指定,這些列全部是ENUM('Y',N')枚舉類型。如果不為其指定值,則使用默認(rèn)值N?!纠}7.2】下面通過SELECT語句查看當(dāng)前root用戶是否具有SELECT、INSERT和UPDATE的權(quán)限mysql>SELECTselect_priv,insert_priv,update_priv,user,hostFROMuser

->WHEREuser='root’ANDhost='localhost';任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶安全字段主要用來判斷用戶是否能夠成功登錄。user表中有ssl_type、ssl_cipher、x509_issuser和x509_subject這4個安全字段。其中ssl用于加密,x509標(biāo)準(zhǔn)可以用來表示用戶。通常標(biāo)準(zhǔn)的MySQL發(fā)行版本并不支持ssl功能,執(zhí)行SHOWVARIABLESLIKE‘have_openss1’語句可以查看MySQL是否具有該功能,具體語句如下。(3)安全字段have_openssl的值為DISABLED,表明該版本的MySQL不支持ssl加密功能。mysql>SHOWVARIABLESLIKE‘have_openss1’;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶資源控制字段用來限制用戶使用的資源。user表中包含如下4個資源控制字段。①max_questions:表示用戶每小時允許執(zhí)行的查詢次數(shù)。②max_updates:表示每小時允許執(zhí)行多少次更新。③max_connections:表示每小時建立多少次連接。④max_user_connections:表示單個用戶可以同時具有的連接數(shù)。它們的默認(rèn)值都是0,表示沒有限制。(4)資源控制字段任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶db表中存儲了用戶對某個數(shù)據(jù)庫的操作權(quán)限,db表的結(jié)構(gòu)如表7-2所示。這里的權(quán)限適用于一個數(shù)據(jù)庫中的所有表。2.db表字段host、user、db為用戶字段,表示從某個主機(jī)連接某個用戶對某個數(shù)據(jù)庫的操作權(quán)限。db表中的權(quán)限字段和user表中的權(quán)限字段大致相同,只是user表中的權(quán)限是針對所有數(shù)據(jù)庫的,而db表中的權(quán)限只針對指定的數(shù)據(jù)庫。如果希望用戶只對某個數(shù)據(jù)庫有操作權(quán)限,可以先將user表中對應(yīng)的權(quán)限設(shè)置為N,然后在db表中設(shè)置對應(yīng)數(shù)據(jù)庫的操作權(quán)限為Y。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-2db表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說明hostCHAR(60)NOPRI主機(jī)名或IP地址dbCHAR(64)NOPRI數(shù)據(jù)庫名userCHAR(32)NOPRI用戶名select_privENUM('N','Y'")NON用于檢索數(shù)據(jù)insert_privENUM('N','Y')NON用于插人數(shù)據(jù)update_privENUM('N','Y')NON用于修改現(xiàn)有數(shù)據(jù)delete_privENUM('N','Y')NON用于刪除現(xiàn)有數(shù)據(jù)create_privENUM('N','Y')NON用于創(chuàng)建新的數(shù)據(jù)庫和表drop_privENUM('N','Y')NON用于刪除現(xiàn)有的數(shù)據(jù)庫和表grant_privENUM('N','Y')NON用于執(zhí)行大量的服務(wù)器管理操作references_privENUM('N','Y')NON用于目前并沒有多大的作用任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-2db表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說明index_privENUM('N','Y')NON用于創(chuàng)建和刪除表的索引alter_privENUM('N','Y')NON用于重命名和修改表的結(jié)構(gòu)create_tmp_table_privENUM('N','Y')NON用于創(chuàng)建臨時表lock_tables_privENUM('N','Y')NON用于鎖定表create_view_privENUM('N','Y')NON用于創(chuàng)建視圖show_view_privENUM('N','Y')NON用于查看視圖create_routine_privENUM('N','Y')NON用于創(chuàng)建存儲過程或自定義函數(shù)alter_routine_privENUM('N','Y')NON用于修改存儲過程或自定義函數(shù)execute_privENUM('N','Y')NON用于執(zhí)行存儲過程或自定義函數(shù)event_privENUM('N','Y')NON用于創(chuàng)建、修改和刪除事件trigger_privENUM('N','Y')NON用于創(chuàng)建和刪除觸發(fā)器任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.3】使用SELECT語句查詢表db中的第一條記錄。mysql>SELECT*FROMmysql.dbLIMIT1\G;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶tables_priv表用來對單個表進(jìn)行權(quán)限設(shè)置,即用來指定表級權(quán)限。表tables_priv的結(jié)構(gòu)如表7-3所示。

host、db、user和table_name字段為作用域列,依次表示主機(jī)名或IP地址、數(shù)據(jù)庫名、用戶名和表名。grantor字段表示權(quán)限是誰設(shè)置的;timestamp字段表示修改權(quán)限的時間;table_priv和column_priv字段為權(quán)限字段,前者表示對表進(jìn)行操作的權(quán)限,后者表示對數(shù)據(jù)列進(jìn)行操作的權(quán)限。3.tables_priv表任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-3tables_priv表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說明hostCHAR(60)NOPRI主機(jī)名或IP地址dbCHAR(64)NOPRI數(shù)據(jù)庫名userCHAR(32)NOPRI用戶名table_nameCHAR(64)NOMUL表名grantorCHAR(93)NO表示修改記錄的用戶timestampTIMESTAMPNOCURRENT_TIMESTAMP表示修改記錄的時間table_privSET('SELECT','INSERT','UPDATE','DELETE','CREATE','DROP','GRANT','REFERENCES','INDEX','ALTER','CREATEVIEW','SHowVIEW','TRIGGER')NO表示對表的操作權(quán)限,包括SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、GRANT、REFERENCES、INDEX和ALTER等column_privSET('SELECT','INSERT','UPDATE','REFERENCES')NO表示對表中的列的操作權(quán)限,包括SELECT、INSERT、UPDATE和REFERENCES任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶columns_priv表用來對單個數(shù)據(jù)列進(jìn)行權(quán)限設(shè)置,即用來指定數(shù)據(jù)列級的操作權(quán)限,columns_priv表的結(jié)構(gòu)如表7-4所示。

host、db、user、table_name和column_priv字段為作用域列,依次表示主機(jī)名或IP地址、數(shù)據(jù)庫名、用戶名、表名和列名,表示可以對哪些數(shù)據(jù)列進(jìn)行操作。可對表中的數(shù)據(jù)列進(jìn)行操作權(quán)限的設(shè)置,這些權(quán)限包括INSERT、UPDATE、SELECT和REFERENCES。4.columns_priv表任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶表7-4columns_priv表的結(jié)構(gòu)字段名字段類型是否為空默認(rèn)值字段說明hostCHAR(60)NO無主機(jī)名或IP地址dbCHAR(64)NO無數(shù)據(jù)庫名userCHAR(32)NO無用戶名table_nameCHAR(64)NO無表名column_nameCHAR(64)NO無表示數(shù)據(jù)列名稱,用來指定對哪些數(shù)據(jù)列具有操作權(quán)限timestampTIMESTAMPNOCURRENT_TIMESTAMP表示修改記錄的時間column_privSET('SELECT','INSERT','UPDATE','REFERENCES')NO無表示對表中的列的操作權(quán)限,包括SELECT、INSERT、UPDATE和REFERENCES任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶procs_priv表可以對存儲過程和存儲函數(shù)進(jìn)行權(quán)限設(shè)置,procs_priv的表結(jié)構(gòu)如表7-5所示。5.procs_priv表字段名字段類型是否為空默認(rèn)值字段說明hostCHAR(60)NO無主機(jī)名dbCHAR(64)NO無數(shù)據(jù)庫名userCHAR(32)NO無用戶名routine_nameCHAR(64)NO無表示存儲過程或函數(shù)的名稱routine_typeENUM('FUNCTION','PROCEDURE')NO無表示存儲過程或函數(shù)的類型。routine_type字段有兩個值,分別是FUNCTION和PROCEDURE。FUNCTION表示函數(shù);PROCEDURE表示存儲過程grantorCHAR(93)NO無表示插入或修改記錄的用戶proc_privSET('EXECUTE','ALTERROUTINE','GRANT')NO無表示擁有的權(quán)限,包括EXECUTE、ALTERROUTINE、GRANT3種timestampTIMESTAMPNOCURRENT_TIMESTAMP表示記錄更新的時間表7-5procs_priv表的結(jié)構(gòu)任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶7.1.2了解MySQL的訪問控制過程1.連接核實(shí)階段當(dāng)用戶連接MySQL服務(wù)器時,服務(wù)器基于用戶的賬號和密碼來進(jìn)行身份驗(yàn)證。即將用戶連接請求中提供的用戶名、主機(jī)地址和密碼與權(quán)限表user中保存的user、host、authentication_string字段值進(jìn)行匹配,如果這3個字段同時匹配成功,MySQL服務(wù)器接受連接請求,然后進(jìn)入請求核實(shí)階段;否則,服務(wù)器拒絕訪問。2.請求核實(shí)階段建立連接之后,服務(wù)器對于用戶的每個操作請求,都要檢查用戶是否有足夠的權(quán)限來執(zhí)行。用戶已經(jīng)被授予的權(quán)限分別保存在user、db、host、tables_priv、columns_priv或procs_priv表中。請求核實(shí)的過程如下。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶(1)用戶向MySQL發(fā)出操作請求。(2)MySQL檢查user權(quán)限表中的權(quán)限信息,匹配user、host字段值,查看請求的全局權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(3)MySQL檢查db權(quán)限表中的權(quán)限信息,匹配user、host、db字段值,查看請求的數(shù)據(jù)庫級別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(4)MySQL檢查tables_priv權(quán)限表中的信息,匹配user、host、db、table_name字段值,查看請求的數(shù)據(jù)庫級別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(5)MySQL檢查columns_priv權(quán)限表中的信息,匹配user、host、db、table_name、column_name字段值,查看請求的數(shù)據(jù)庫級別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL返回錯誤信息,用戶請求的操作不能執(zhí)行,操作失敗。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶7.1.3用命令方式創(chuàng)建和管理用戶創(chuàng)建用戶是指添加普通用戶,創(chuàng)建用戶有3種方式:通過CREATEUSER語句創(chuàng)建;通過INSERT語句創(chuàng)建;通過GRANT語句創(chuàng)建。(1)用CREATEUSER語句創(chuàng)建用戶CREATEUSER語句用于創(chuàng)建新的MySQL用戶,即在mysql.user表中創(chuàng)建-條新記錄如果創(chuàng)建的用戶已經(jīng)存在,則出現(xiàn)錯誤。CREATEUSER語句的基本語法格式如下。1.創(chuàng)建用戶CREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password'][,user[IDENTIFIEDBY[PASSWORD]'password']]…任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.4】使用CREATEUSER語句為學(xué)生成績管理數(shù)據(jù)庫cjgl創(chuàng)建名為teacher111的用戶,指定主機(jī)名是localhost、密碼為teacher123。mysql>usecijlmysql->CREATEUSER'teacher111'@'localhost'IDENTIFIEDBY'teacher123';創(chuàng)建完成后可以通過SELECT語句查詢user表中的記錄,并且指定查詢的條件,執(zhí)行的語句如下。

mysql>SELECTuser,hostFROMmysql.userWHEREuser='teacher111';新創(chuàng)建的用戶擁有的權(quán)限很少,它們只能執(zhí)行不需要權(quán)限的操作。如登錄MySQL、使用SHOW語句查詢所有存儲引擎和字符集的列表等。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.5】使用CREATEUSER語句為學(xué)生成績管理數(shù)據(jù)庫cjgl一次性創(chuàng)建名稱為student1、student2和student3的用戶,密碼與用戶名一致,主機(jī)名都是localhost。(2)用INSERT語句創(chuàng)建用戶。還可以直接用INSERT語句向mysql.user表中添加用戶信息來創(chuàng)建用戶,但用戶必須擁有對user表的INSERT權(quán)限。使用INSERT語句向user表中添加host、user和authentication_string字段的值時,其他未指定的字段一般會使用默認(rèn)值,但ssl_cipher、x509_issuer和x509_subject字段并沒有默認(rèn)值,因此要為它們指定初始值(如空值),否則直接執(zhí)行INSERT語句會提示出錯。Mysql->CREATEUSER'student1'@'localhost'IDENTIFIEDBY'student1',->'student2'@'localhost'IDENTIFIEDBY'student2',->'student3'@'localhost'IDENTIFIEDBY'student3';任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.6】使用INSERT語句為學(xué)生成績管理數(shù)據(jù)庫cjgl創(chuàng)建名稱是student4的用戶,指定主機(jī)名是localhost、密碼是student4。執(zhí)行完INSERT語句后用戶新建成功。但此時通過該賬戶登錄MySQL服務(wù)器并不會成功,因?yàn)樾掠脩暨€沒有生效。重啟MySQL服務(wù)器或者執(zhí)行FLUSHPRIVILEGES語句可以使新用戶生效,如下所示,該語句可以從user表中重新載入權(quán)限。mysql>INSERTINTOmysql.user(host,user,authentication_string,ss1_cipher,x509_issuer,x509_subject)VALUES('localhost','student4',PASSWORD('student4'),'','','');mysql>FLUSHPRIVILEGES;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶在MySQL中,可以通過多種方式修改用戶名和密碼。(1)使用RENAMEUSER語句修改用戶名。在MySQL中,可以使用RENAMEUSER語句修改一個或多個已經(jīng)存在的用戶名。其語法格式如下。RENAMEUSERold_userTOnew_user需要注意的是,如果系統(tǒng)中舊賬戶不存在或者新賬戶已存在,執(zhí)行該語句會出現(xiàn)錯誤。使用RENAMEUSER語句,必須擁有mysql數(shù)據(jù)庫的UPDATE權(quán)限或全局CREATEUSER權(quán)限。2.

修改用戶任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.7】使用RENAMEUSER語句將學(xué)生成績管理數(shù)據(jù)庫cjgl中名為student1的用戶改名為student??梢允褂胹tudent用戶登錄數(shù)據(jù)庫服務(wù)器,執(zhí)行如下語句。C:\Users\Admin>mysql-hlocalhost-ustudent-p(2)使用SET語句修改密碼。在使用root用戶登錄到MySQL服務(wù)器時,還可以直接使用SET語句修改密碼。SET語句的基本語法格式如下。SETPASSWORDFORusername@localhost=PASSWORD('new_password');其中,username表示要修改密碼的用戶名,new_password表示新密碼。如果更改用戶自身的密碼,可直接使用以下語句。SETPASSWORD=PASSWORD("new_password");mysql>RENAMEUSER'student1'@'localhost'TO'student'@'localhost';mysql>FLUSHPRIVILEGES;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.8】以root用戶的身份登錄MySQL服務(wù)器,然后使用SET語句將root用戶的密碼更改為root。(3)使用mysqladmin語句修改密碼。root用戶可以修改自己的密碼和普通用戶的密碼;普通用戶可以修改自己的密碼。mysqladmin是MySQL服務(wù)器的管理工具,使用mysqladmin語句既可以修改root用戶的密碼,也可以修改普通用戶的密碼。其基本語法格式如下。mysqladmin-uusername-ppassword'new_password';mysql>SETPASSWORDFORroot@localhost=PASSWORD(‘root’);任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.9】使用mysqladmin命令將root用戶的密碼更改回mysql。執(zhí)行該語句時系統(tǒng)要求輸入原密碼,修改完畢后系統(tǒng)會發(fā)出警告信息。C:\Users\Admin>mysqladmin-uroot-ppassword'mysql'Enterpassword:********mysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.Warning:Sincepasswordwillbesenttoserverinplaintext,usesslconnectiontoensurepasswordsafety.任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.10】使用mysqladmin語句將學(xué)生成績管理數(shù)據(jù)庫cjgl中名為student的用戶的原密碼student1修改為student。(4)使用UPDATE語句修改密碼。在以root用戶身份登錄到MySQL數(shù)據(jù)庫時,可以使用UPDATE語句更改mysql.user表的authentication_string字段值來修改密碼。UPDATE語句修改密碼的語法格式如下。C:\Users\Admin>mysqladmin-ustudent-ppassword‘student’UPDATEuserSETpassword=PASSWORD("new_password")WHEREuser='username'ANDhost='hostname';任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.11】使用UPDATE語句更改用戶student2的密碼,指定新的密碼是student。密碼修改完畢后執(zhí)行FLUSHPRIVILEGES語句刷新權(quán)限,如下所示。再次使用student2用戶身份登錄時需要使用新的密碼。mysql>UPDATEmysql.userSETpassword=PASSWORD("student")WHEREuser="student4"ANDhost="localhost";mysql>FLUSHPRIVILEGES;任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶在MySQL數(shù)據(jù)庫中,可以使用DROPUSER語句刪除用戶,也可以直接在mysql.user表中刪除用戶及其相關(guān)權(quán)限。(1)用DROPUSER語句刪除用戶。使用DROPUSER語句刪除用戶以及權(quán)限信息時必須擁有DROP權(quán)限。該語句的語法格式如下。3.

刪除用戶DROPUSERuser[,user]任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.12】使用DROPUSER語句刪除學(xué)生成績管理數(shù)據(jù)庫cjgl中名為student3、student4的用戶,其主機(jī)名都是localhost。(2)用DELETE語句刪除用戶。使用DELETE語句刪除用戶時必須擁有對mysql.user表的DELETE權(quán)限,使用該語句可直接將用戶的信息從user表中刪除。該語句的基本語法格式如下。mysql>DROPUSER'student3'@'localhost','student4'@'localhost';DELETEFROMuserWHEREhost='localhost'ANDuser='username';任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶【例題7.13】使用DELETE語句刪除學(xué)生成績管理數(shù)據(jù)庫中名為student2的用戶,其主機(jī)名是localhost。執(zhí)行完上述語句后還要使用FLUSHPRIVILEGES語句來使刪除用戶生效,如下所示。mysql>DELETEFROMmysql.userWHEREHost=’localhost’ANDUser=’student2’;mysql>FLUSHPRIVILEGES任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶7.1.4用MySQLWorkbench圖形化工具創(chuàng)建和管理用戶使用MySQLWorkbench圖形化工具可以創(chuàng)建、修改和刪除用戶賬號,編輯配置文件等?!纠}7.14】使用MySQLWorkbench圖形化工具為學(xué)生成績管理數(shù)據(jù)庫cjgl創(chuàng)建名為teacher的用戶,密碼為teacher123,然后修改密碼為teacher111,最后刪除teacher用戶。

(1)打開MySQLWorkbench圖形化工具,登錄MySQL服務(wù)器,在導(dǎo)航窗格單擊MANAGEMENT欄的UsersandPrivileges,打開圖7-3所示的用戶和權(quán)限的管理界面,其中會顯示當(dāng)前MySQL服務(wù)器中的所有用戶。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶

(2)單擊AddAccount按鈕彈出創(chuàng)建用戶窗口,在Login選項(xiàng)卡中設(shè)置用戶名為teacher、認(rèn)證類型為Standard、主機(jī)名為%、密碼為teacher123,單擊Apply按鈕,此時在窗口左側(cè)可見剛剛創(chuàng)建的teacher用戶,如圖7-4所示。任務(wù)1管理學(xué)生成績管理數(shù)據(jù)庫的用戶(4)不再需要的用戶可以直接刪除。如要刪除teacher用戶,只需在用戶列表中選中teacher用戶,單擊下方的Delete按鈕,確認(rèn)刪除即可。單擊Refresh按鈕可刷新用戶列表。(3)在窗口左側(cè)的用戶列表中,選擇用戶teacher,可查看該用戶的用戶名、認(rèn)證類型、主機(jī)名稱、用戶密碼等信息。而且可以對該用戶信息進(jìn)行修改,如將其密碼修改為teacher111,然后單擊Apply按鈕。任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限7.2.1用命令方式管理權(quán)限授予權(quán)限也稱分配權(quán)限,是指為某個用戶賦予某些權(quán)限。例如,可以為新建的用戶賦予查詢所有數(shù)據(jù)庫和表的權(quán)限。在MySQL數(shù)據(jù)庫中可以使用以下兩種方法給用戶授予權(quán)限。(1)直接操作MySQL的權(quán)限表來給用戶授予權(quán)限。如在使用INSERT語句向mysql.user表中插入用戶數(shù)據(jù)時直接為權(quán)限字段賦值。(2)使用GRANT語句給用戶授予權(quán)限。GRANT語句的主要用途是給用戶授權(quán),可以使用它在創(chuàng)建新用戶的同時進(jìn)行授權(quán)。GRANT語句的基本語法格式如下。1.

授予權(quán)限GRANTpriv_type[(column_list)]ONdatabase.tableTOuser[IDENTIFIEDBY[PASSWORD]'password'][,user[IDENTIFIEDBY[PASSWORD]'password']]…[WITH{GRANTOPTION|resource_option}...【例題7.15】使用GRANT語句為學(xué)生成績管理數(shù)據(jù)庫cjgl創(chuàng)建名為student5的用戶,指定主機(jī)名為localhost、密碼為student5,該用戶對所有數(shù)據(jù)庫的所有表都擁有SELECT的權(quán)限??梢酝ㄟ^SELECT語句查看該用戶的權(quán)限信息,執(zhí)行如下語句。任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限GRANTSELECTON*.*TO'student5'@'localhost'IDENTIFIEDBY'student5';mysql>SELECT*FROMmysql.userWHEREuser='student5'\G;【例題7.16】使用GRANT語句給學(xué)生成績管理數(shù)據(jù)庫cjgl的student用戶授予對所有數(shù)據(jù)庫中所有表的SELECT、INSERT和UPDATE的權(quán)限,允許該用戶將這些權(quán)限賦予別的用戶??梢允褂肧ELECT語句查詢mysql.user表,并且查看student用戶的信息,執(zhí)行如下語句。任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限mysql>GRANTSELECT,INSERT,UPDATEON*.*TO'student'@'localhost'IDENTIFIEDBY'student'WITHGRANTOPTION;mysql>SELECThost,user,authentication_string,select_priv,Insert_priv,update_priv,delete_privFROMmysql.userWHEREuser='student'ANDhost='localhost'\G;任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限在MySQL數(shù)據(jù)庫中查看用戶的權(quán)限有以下兩種方法。(1)使用SELECT語句查看權(quán)限。通過SELECT語句查看mysql.user權(quán)限表中的記錄,可以查看所有用戶的權(quán)限。這種方式非常簡單,但必須擁有對mysql.user表的查詢權(quán)限。2.

查看權(quán)限(2)使用SHOWGRANTS語句查看權(quán)限。SELECT*FROMmysql.user;SHOWGRANTSFOR‘username’@’hostname’;【例題7.17】使用SHOWGRANTS語句查看root用戶的權(quán)限。任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限mysql>SHOWGRANTSFOR‘root’@’localhost’\G;任務(wù)2管理學(xué)生成績管理數(shù)據(jù)庫用戶的權(quán)限收回權(quán)限也稱取消權(quán)限,是指取消某個用戶的某些權(quán)限。數(shù)據(jù)庫管理員給普通用戶授權(quán)時一定要特別小心,如果授權(quán)不當(dāng),可能會給數(shù)據(jù)庫帶來嚴(yán)重的后果。如果發(fā)現(xiàn)授予用戶的權(quán)限太多,應(yīng)該盡快將權(quán)限收回。在MySQL中可以使用REVOKE語句實(shí)現(xiàn)取消權(quán)限的功能。REVOKE語句的基本語法格式如下。3.

收回權(quán)限REVOKE語句的語法與GRANT語句非常相似,參數(shù)的意義也相同。使用REVOKE語句可以同時取消多個用戶的權(quán)限,每個

溫馨提示

  • 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

提交評論