版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元7MySQL用戶管理《MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(慕課版)》學(xué)習(xí)內(nèi)容任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶
2任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限任務(wù)4卸載MySQL任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶7.1.1了解MySQL的權(quán)限表
MySQL在安裝時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè)名為mysql的系統(tǒng)數(shù)據(jù)庫(kù),它保存了數(shù)據(jù)庫(kù)的賬戶信息、權(quán)限信息、存儲(chǔ)過(guò)程和時(shí)區(qū)等信息。
mysql>showdatabases;mysql>usemysql;mysql>showtables;執(zhí)行SHOWTABLES語(yǔ)句可以查看當(dāng)前數(shù)據(jù)庫(kù)下存在的所有表,MySQL5.7.20版本中包含31張表,用戶權(quán)限信息被分別存儲(chǔ)在其中的user、db、host、tables_priv、columns_priv和procs_priv表中。在MySQL啟動(dòng)時(shí),服務(wù)器將這些表中權(quán)限信息讀入內(nèi)存。當(dāng)用戶登錄系統(tǒng)后,MySQL數(shù)據(jù)庫(kù)系統(tǒng)會(huì)根據(jù)這些表的內(nèi)容為每個(gè)用戶賦予相應(yīng)的權(quán)限。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶mysql>descuser;mysql數(shù)據(jù)庫(kù)中的user表是MySQL中最重要的一個(gè)權(quán)限表,用來(lái)記錄允許連接到服務(wù)器的用戶信息,包括用戶名稱、主機(jī)名、密碼和操作權(quán)限等。使用descuser語(yǔ)句可以查看這些字段,它們可以分為4類,即用戶字段、權(quán)限字段、安全字段和資源控制字段。1.user表
任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶User表中的host、user和pssword字段都屬于用戶字段,存儲(chǔ)了用戶連接MySQL數(shù)據(jù)庫(kù)時(shí)需要輸入的信息。host表示主機(jī)名或主機(jī)的IP地址(即用戶連接MySQL時(shí)所用主機(jī)的名字)、user表示用戶名、authentication_string表示密碼字段。用戶登錄時(shí),如果這3個(gè)字段同時(shí)匹配,MySQL數(shù)據(jù)庫(kù)系統(tǒng)才會(huì)允許其登錄。(1)用戶字段MySQL5.7版本不再使用Password來(lái)作為密碼字段。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶可以看出,user字段的值有如下3個(gè)。①mysql.sys:用于sysschema中對(duì)象的定義。使用mysql.sys可避免數(shù)據(jù)庫(kù)管理員重命名或者刪除root用戶時(shí)發(fā)生問(wèn)題。該用戶已被鎖定,客戶端無(wú)法連接。②mysql.session:用于插件內(nèi)部訪問(wèn)服務(wù)器。該用戶已被鎖定,客戶端無(wú)法連接。③root:用于管理。該用戶擁有所有權(quán)限,可執(zhí)行任何操作。host、user和password這3個(gè)字段決定了用戶能否登錄,用戶登錄時(shí),會(huì)先判斷這3個(gè)字段的值是否同時(shí)匹配,若是,MySQL數(shù)據(jù)庫(kù)系統(tǒng)才會(huì)允許用戶登錄?!纠}7.1】使用select語(yǔ)句查看user表中的所有用戶。mysql>selecthost,user,authentication_stringfromuser;任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶user表中以_priv結(jié)尾的字段都是權(quán)限字段,如表7-1所示。權(quán)限字段決定了用戶的權(quán)限,用來(lái)描述在全局范圍內(nèi)決定是否允許對(duì)數(shù)據(jù)和數(shù)據(jù)庫(kù)進(jìn)行操作。(2)權(quán)限字段權(quán)限字段值的數(shù)據(jù)類型為ENUM,可取的值只有Y和N,Y表示用戶有對(duì)應(yīng)的權(quán)限,N表示用戶沒有對(duì)應(yīng)的權(quán)限。從安全角度考慮,這些字段的默認(rèn)值都為N。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-1user表的權(quán)限字段及相關(guān)介紹屬性名對(duì)應(yīng)權(quán)限字段說(shuō)明select_privSELECT允許使用SELECT語(yǔ)句檢索數(shù)據(jù)insert_privINSERT允許使用INSERT語(yǔ)句插入數(shù)據(jù)update_privUPDATE允許使用UPDATE語(yǔ)句修改現(xiàn)有數(shù)據(jù)delete_privDELETE允許使用DELETE語(yǔ)句從表中刪除現(xiàn)有數(shù)據(jù)create_privCREATE允許創(chuàng)建新的數(shù)據(jù)庫(kù)和表,但是不允許創(chuàng)建索引drop_privDROP允許刪除現(xiàn)有的數(shù)據(jù)庫(kù)和表,但是不允許刪除索引reload_privRELOAD允許執(zhí)行大量的服務(wù)器管理操作,包括日志、權(quán)限、主機(jī)、查詢和表shutdown_privSHUTDOWN允許關(guān)閉MySQL服務(wù)器process_privPROCESS允許使用SHOWPROCESSLIST語(yǔ)句查看服務(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é)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-1user表的權(quán)限字段及相關(guān)介紹屬性名對(duì)應(yīng)權(quán)限字段說(shuō)明alter_pivALTER允許重命名和修改表的結(jié)構(gòu)show_db_privSHOWDATABASES允許查看所有的數(shù)據(jù)庫(kù)super_privSUPER允許使用某些強(qiáng)大的管理功能create_tmp_table_privCREATETEMPORARYTABLES允許創(chuàng)建臨時(shí)表lock_tables_privLOCAKTABLES允許使用LOCKTABLES語(yǔ)句鎖定表execute_privEXECUTE允許執(zhí)行存儲(chǔ)過(guò)程和自定義函數(shù)repl_slave_privREPLICATIONSLAVE允許讀取用戶維護(hù)、復(fù)制數(shù)據(jù)庫(kù)環(huán)境的二進(jìn)制日志文件repl_client_privREPLICATIONCLIENT允許從服務(wù)器和主服務(wù)器的位置復(fù)制create_view_privCREATEVIEW允許創(chuàng)建視圖show_view_privSHOWVIEW允許查看視圖create_routine_privCREATEROUTINE允許創(chuàng)建存儲(chǔ)過(guò)程或自定義函數(shù)alter_routine_privALTERROUTINE允許修改存儲(chǔ)過(guò)程或自定義函數(shù)create_user_privCREATEUSER允許執(zhí)行CREATEUSER語(yǔ)句創(chuàng)建用戶eventprivCREATE/DROPEVENT允許創(chuàng)建、修改和刪除事件trigger_privCREATE/DROPTRIGGER允許創(chuàng)建和刪除觸發(fā)器任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶上述輸出結(jié)果表示,當(dāng)前主機(jī)的root用戶具有SELECT、INSERT和UPDATE的權(quán)限。在上述的所有權(quán)限字段中,每一個(gè)權(quán)限以一個(gè)單獨(dú)的列指定,這些列全部是ENUM('Y',N')枚舉類型。如果不為其指定值,則使用默認(rèn)值N。【例題7.2】下面通過(guò)SELECT語(yǔ)句查看當(dāng)前root用戶是否具有SELECT、INSERT和UPDATE的權(quán)限mysql>SELECTselect_priv,insert_priv,update_priv,user,hostFROMuser
->WHEREuser='root’ANDhost='localhost';任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶安全字段主要用來(lái)判斷用戶是否能夠成功登錄。user表中有ssl_type、ssl_cipher、x509_issuser和x509_subject這4個(gè)安全字段。其中ssl用于加密,x509標(biāo)準(zhǔn)可以用來(lái)表示用戶。通常標(biāo)準(zhǔn)的MySQL發(fā)行版本并不支持ssl功能,執(zhí)行SHOWVARIABLESLIKE‘have_openss1’語(yǔ)句可以查看MySQL是否具有該功能,具體語(yǔ)句如下。(3)安全字段have_openssl的值為DISABLED,表明該版本的MySQL不支持ssl加密功能。mysql>SHOWVARIABLESLIKE‘have_openss1’;任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶資源控制字段用來(lái)限制用戶使用的資源。user表中包含如下4個(gè)資源控制字段。①max_questions:表示用戶每小時(shí)允許執(zhí)行的查詢次數(shù)。②max_updates:表示每小時(shí)允許執(zhí)行多少次更新。③max_connections:表示每小時(shí)建立多少次連接。④max_user_connections:表示單個(gè)用戶可以同時(shí)具有的連接數(shù)。它們的默認(rèn)值都是0,表示沒有限制。(4)資源控制字段任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶db表中存儲(chǔ)了用戶對(duì)某個(gè)數(shù)據(jù)庫(kù)的操作權(quán)限,db表的結(jié)構(gòu)如表7-2所示。這里的權(quán)限適用于一個(gè)數(shù)據(jù)庫(kù)中的所有表。2.db表字段host、user、db為用戶字段,表示從某個(gè)主機(jī)連接某個(gè)用戶對(duì)某個(gè)數(shù)據(jù)庫(kù)的操作權(quán)限。db表中的權(quán)限字段和user表中的權(quán)限字段大致相同,只是user表中的權(quán)限是針對(duì)所有數(shù)據(jù)庫(kù)的,而db表中的權(quán)限只針對(duì)指定的數(shù)據(jù)庫(kù)。如果希望用戶只對(duì)某個(gè)數(shù)據(jù)庫(kù)有操作權(quán)限,可以先將user表中對(duì)應(yīng)的權(quán)限設(shè)置為N,然后在db表中設(shè)置對(duì)應(yīng)數(shù)據(jù)庫(kù)的操作權(quán)限為Y。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-2db表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說(shuō)明hostCHAR(60)NOPRI主機(jī)名或IP地址dbCHAR(64)NOPRI數(shù)據(jù)庫(kù)名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ù)庫(kù)和表drop_privENUM('N','Y')NON用于刪除現(xiàn)有的數(shù)據(jù)庫(kù)和表grant_privENUM('N','Y')NON用于執(zhí)行大量的服務(wù)器管理操作references_privENUM('N','Y')NON用于目前并沒有多大的作用任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-2db表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說(shuō)明index_privENUM('N','Y')NON用于創(chuàng)建和刪除表的索引alter_privENUM('N','Y')NON用于重命名和修改表的結(jié)構(gòu)create_tmp_table_privENUM('N','Y')NON用于創(chuàng)建臨時(shí)表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)建存儲(chǔ)過(guò)程或自定義函數(shù)alter_routine_privENUM('N','Y')NON用于修改存儲(chǔ)過(guò)程或自定義函數(shù)execute_privENUM('N','Y')NON用于執(zhí)行存儲(chǔ)過(guò)程或自定義函數(shù)event_privENUM('N','Y')NON用于創(chuàng)建、修改和刪除事件trigger_privENUM('N','Y')NON用于創(chuàng)建和刪除觸發(fā)器任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.3】使用SELECT語(yǔ)句查詢表db中的第一條記錄。mysql>SELECT*FROMmysql.dbLIMIT1\G;任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶tables_priv表用來(lái)對(duì)單個(gè)表進(jìn)行權(quán)限設(shè)置,即用來(lái)指定表級(jí)權(quán)限。表tables_priv的結(jié)構(gòu)如表7-3所示。
host、db、user和table_name字段為作用域列,依次表示主機(jī)名或IP地址、數(shù)據(jù)庫(kù)名、用戶名和表名。grantor字段表示權(quán)限是誰(shuí)設(shè)置的;timestamp字段表示修改權(quán)限的時(shí)間;table_priv和column_priv字段為權(quán)限字段,前者表示對(duì)表進(jìn)行操作的權(quán)限,后者表示對(duì)數(shù)據(jù)列進(jìn)行操作的權(quán)限。3.tables_priv表任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-3tables_priv表的結(jié)構(gòu)字段名字段類型是否為空主鍵默認(rèn)值字段說(shuō)明hostCHAR(60)NOPRI主機(jī)名或IP地址dbCHAR(64)NOPRI數(shù)據(jù)庫(kù)名userCHAR(32)NOPRI用戶名table_nameCHAR(64)NOMUL表名grantorCHAR(93)NO表示修改記錄的用戶timestampTIMESTAMPNOCURRENT_TIMESTAMP表示修改記錄的時(shí)間table_privSET('SELECT','INSERT','UPDATE','DELETE','CREATE','DROP','GRANT','REFERENCES','INDEX','ALTER','CREATEVIEW','SHowVIEW','TRIGGER')NO表示對(duì)表的操作權(quán)限,包括SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、GRANT、REFERENCES、INDEX和ALTER等column_privSET('SELECT','INSERT','UPDATE','REFERENCES')NO表示對(duì)表中的列的操作權(quán)限,包括SELECT、INSERT、UPDATE和REFERENCES任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶columns_priv表用來(lái)對(duì)單個(gè)數(shù)據(jù)列進(jìn)行權(quán)限設(shè)置,即用來(lái)指定數(shù)據(jù)列級(jí)的操作權(quán)限,columns_priv表的結(jié)構(gòu)如表7-4所示。
host、db、user、table_name和column_priv字段為作用域列,依次表示主機(jī)名或IP地址、數(shù)據(jù)庫(kù)名、用戶名、表名和列名,表示可以對(duì)哪些數(shù)據(jù)列進(jìn)行操作。可對(duì)表中的數(shù)據(jù)列進(jìn)行操作權(quán)限的設(shè)置,這些權(quán)限包括INSERT、UPDATE、SELECT和REFERENCES。4.columns_priv表任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶表7-4columns_priv表的結(jié)構(gòu)字段名字段類型是否為空默認(rèn)值字段說(shuō)明hostCHAR(60)NO無(wú)主機(jī)名或IP地址dbCHAR(64)NO無(wú)數(shù)據(jù)庫(kù)名userCHAR(32)NO無(wú)用戶名table_nameCHAR(64)NO無(wú)表名column_nameCHAR(64)NO無(wú)表示數(shù)據(jù)列名稱,用來(lái)指定對(duì)哪些數(shù)據(jù)列具有操作權(quán)限timestampTIMESTAMPNOCURRENT_TIMESTAMP表示修改記錄的時(shí)間column_privSET('SELECT','INSERT','UPDATE','REFERENCES')NO無(wú)表示對(duì)表中的列的操作權(quán)限,包括SELECT、INSERT、UPDATE和REFERENCES任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶procs_priv表可以對(duì)存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)進(jìn)行權(quán)限設(shè)置,procs_priv的表結(jié)構(gòu)如表7-5所示。5.procs_priv表字段名字段類型是否為空默認(rèn)值字段說(shuō)明hostCHAR(60)NO無(wú)主機(jī)名dbCHAR(64)NO無(wú)數(shù)據(jù)庫(kù)名userCHAR(32)NO無(wú)用戶名routine_nameCHAR(64)NO無(wú)表示存儲(chǔ)過(guò)程或函數(shù)的名稱routine_typeENUM('FUNCTION','PROCEDURE')NO無(wú)表示存儲(chǔ)過(guò)程或函數(shù)的類型。routine_type字段有兩個(gè)值,分別是FUNCTION和PROCEDURE。FUNCTION表示函數(shù);PROCEDURE表示存儲(chǔ)過(guò)程grantorCHAR(93)NO無(wú)表示插入或修改記錄的用戶proc_privSET('EXECUTE','ALTERROUTINE','GRANT')NO無(wú)表示擁有的權(quán)限,包括EXECUTE、ALTERROUTINE、GRANT3種timestampTIMESTAMPNOCURRENT_TIMESTAMP表示記錄更新的時(shí)間表7-5procs_priv表的結(jié)構(gòu)任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶7.1.2了解MySQL的訪問(wèn)控制過(guò)程1.連接核實(shí)階段當(dāng)用戶連接MySQL服務(wù)器時(shí),服務(wù)器基于用戶的賬號(hào)和密碼來(lái)進(jìn)行身份驗(yàn)證。即將用戶連接請(qǐng)求中提供的用戶名、主機(jī)地址和密碼與權(quán)限表user中保存的user、host、authentication_string字段值進(jìn)行匹配,如果這3個(gè)字段同時(shí)匹配成功,MySQL服務(wù)器接受連接請(qǐng)求,然后進(jìn)入請(qǐng)求核實(shí)階段;否則,服務(wù)器拒絕訪問(wèn)。2.請(qǐng)求核實(shí)階段建立連接之后,服務(wù)器對(duì)于用戶的每個(gè)操作請(qǐng)求,都要檢查用戶是否有足夠的權(quán)限來(lái)執(zhí)行。用戶已經(jīng)被授予的權(quán)限分別保存在user、db、host、tables_priv、columns_priv或procs_priv表中。請(qǐng)求核實(shí)的過(guò)程如下。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶(1)用戶向MySQL發(fā)出操作請(qǐng)求。(2)MySQL檢查user權(quán)限表中的權(quán)限信息,匹配user、host字段值,查看請(qǐng)求的全局權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(3)MySQL檢查db權(quán)限表中的權(quán)限信息,匹配user、host、db字段值,查看請(qǐng)求的數(shù)據(jù)庫(kù)級(jí)別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(4)MySQL檢查tables_priv權(quán)限表中的信息,匹配user、host、db、table_name字段值,查看請(qǐng)求的數(shù)據(jù)庫(kù)級(jí)別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL繼續(xù)向下查找。(5)MySQL檢查columns_priv權(quán)限表中的信息,匹配user、host、db、table_name、column_name字段值,查看請(qǐng)求的數(shù)據(jù)庫(kù)級(jí)別的權(quán)限是否被允許,如果找到匹配結(jié)果,操作允許執(zhí)行,否則MySQL返回錯(cuò)誤信息,用戶請(qǐng)求的操作不能執(zhí)行,操作失敗。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶7.1.3用命令方式創(chuàng)建和管理用戶創(chuàng)建用戶是指添加普通用戶,創(chuàng)建用戶有3種方式:通過(guò)CREATEUSER語(yǔ)句創(chuàng)建;通過(guò)INSERT語(yǔ)句創(chuàng)建;通過(guò)GRANT語(yǔ)句創(chuàng)建。(1)用CREATEUSER語(yǔ)句創(chuàng)建用戶CREATEUSER語(yǔ)句用于創(chuàng)建新的MySQL用戶,即在mysql.user表中創(chuàng)建-條新記錄如果創(chuàng)建的用戶已經(jīng)存在,則出現(xiàn)錯(cuò)誤。CREATEUSER語(yǔ)句的基本語(yǔ)法格式如下。1.創(chuàng)建用戶CREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password'][,user[IDENTIFIEDBY[PASSWORD]'password']]…任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.4】使用CREATEUSER語(yǔ)句為學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl創(chuàng)建名為teacher111的用戶,指定主機(jī)名是localhost、密碼為teacher123。mysql>usecijlmysql->CREATEUSER'teacher111'@'localhost'IDENTIFIEDBY'teacher123';創(chuàng)建完成后可以通過(guò)SELECT語(yǔ)句查詢user表中的記錄,并且指定查詢的條件,執(zhí)行的語(yǔ)句如下。
mysql>SELECTuser,hostFROMmysql.userWHEREuser='teacher111';新創(chuàng)建的用戶擁有的權(quán)限很少,它們只能執(zhí)行不需要權(quán)限的操作。如登錄MySQL、使用SHOW語(yǔ)句查詢所有存儲(chǔ)引擎和字符集的列表等。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.5】使用CREATEUSER語(yǔ)句為學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl一次性創(chuàng)建名稱為student1、student2和student3的用戶,密碼與用戶名一致,主機(jī)名都是localhost。(2)用INSERT語(yǔ)句創(chuàng)建用戶。還可以直接用INSERT語(yǔ)句向mysql.user表中添加用戶信息來(lái)創(chuàng)建用戶,但用戶必須擁有對(duì)user表的INSERT權(quán)限。使用INSERT語(yǔ)句向user表中添加host、user和authentication_string字段的值時(shí),其他未指定的字段一般會(huì)使用默認(rèn)值,但ssl_cipher、x509_issuer和x509_subject字段并沒有默認(rèn)值,因此要為它們指定初始值(如空值),否則直接執(zhí)行INSERT語(yǔ)句會(huì)提示出錯(cuò)。Mysql->CREATEUSER'student1'@'localhost'IDENTIFIEDBY'student1',->'student2'@'localhost'IDENTIFIEDBY'student2',->'student3'@'localhost'IDENTIFIEDBY'student3';任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.6】使用INSERT語(yǔ)句為學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl創(chuàng)建名稱是student4的用戶,指定主機(jī)名是localhost、密碼是student4。執(zhí)行完INSERT語(yǔ)句后用戶新建成功。但此時(shí)通過(guò)該賬戶登錄MySQL服務(wù)器并不會(huì)成功,因?yàn)樾掠脩暨€沒有生效。重啟MySQL服務(wù)器或者執(zhí)行FLUSHPRIVILEGES語(yǔ)句可以使新用戶生效,如下所示,該語(yǔ)句可以從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é)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶在MySQL中,可以通過(guò)多種方式修改用戶名和密碼。(1)使用RENAMEUSER語(yǔ)句修改用戶名。在MySQL中,可以使用RENAMEUSER語(yǔ)句修改一個(gè)或多個(gè)已經(jīng)存在的用戶名。其語(yǔ)法格式如下。RENAMEUSERold_userTOnew_user需要注意的是,如果系統(tǒng)中舊賬戶不存在或者新賬戶已存在,執(zhí)行該語(yǔ)句會(huì)出現(xiàn)錯(cuò)誤。使用RENAMEUSER語(yǔ)句,必須擁有mysql數(shù)據(jù)庫(kù)的UPDATE權(quán)限或全局CREATEUSER權(quán)限。2.
修改用戶任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.7】使用RENAMEUSER語(yǔ)句將學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中名為student1的用戶改名為student。可以使用student用戶登錄數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行如下語(yǔ)句。C:\Users\Admin>mysql-hlocalhost-ustudent-p(2)使用SET語(yǔ)句修改密碼。在使用root用戶登錄到MySQL服務(wù)器時(shí),還可以直接使用SET語(yǔ)句修改密碼。SET語(yǔ)句的基本語(yǔ)法格式如下。SETPASSWORDFORusername@localhost=PASSWORD('new_password');其中,username表示要修改密碼的用戶名,new_password表示新密碼。如果更改用戶自身的密碼,可直接使用以下語(yǔ)句。SETPASSWORD=PASSWORD("new_password");mysql>RENAMEUSER'student1'@'localhost'TO'student'@'localhost';mysql>FLUSHPRIVILEGES;任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.8】以root用戶的身份登錄MySQL服務(wù)器,然后使用SET語(yǔ)句將root用戶的密碼更改為root。(3)使用mysqladmin語(yǔ)句修改密碼。root用戶可以修改自己的密碼和普通用戶的密碼;普通用戶可以修改自己的密碼。mysqladmin是MySQL服務(wù)器的管理工具,使用mysqladmin語(yǔ)句既可以修改root用戶的密碼,也可以修改普通用戶的密碼。其基本語(yǔ)法格式如下。mysqladmin-uusername-ppassword'new_password';mysql>SETPASSWORDFORroot@localhost=PASSWORD(‘root’);任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.9】使用mysqladmin命令將root用戶的密碼更改回mysql。執(zhí)行該語(yǔ)句時(shí)系統(tǒng)要求輸入原密碼,修改完畢后系統(tǒng)會(huì)發(fā)出警告信息。C:\Users\Admin>mysqladmin-uroot-ppassword'mysql'Enterpassword:********mysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.Warning:Sincepasswordwillbesenttoserverinplaintext,usesslconnectiontoensurepasswordsafety.任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.10】使用mysqladmin語(yǔ)句將學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中名為student的用戶的原密碼student1修改為student。(4)使用UPDATE語(yǔ)句修改密碼。在以root用戶身份登錄到MySQL數(shù)據(jù)庫(kù)時(shí),可以使用UPDATE語(yǔ)句更改mysql.user表的authentication_string字段值來(lái)修改密碼。UPDATE語(yǔ)句修改密碼的語(yǔ)法格式如下。C:\Users\Admin>mysqladmin-ustudent-ppassword‘student’UPDATEuserSETpassword=PASSWORD("new_password")WHEREuser='username'ANDhost='hostname';任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.11】使用UPDATE語(yǔ)句更改用戶student2的密碼,指定新的密碼是student。密碼修改完畢后執(zhí)行FLUSHPRIVILEGES語(yǔ)句刷新權(quán)限,如下所示。再次使用student2用戶身份登錄時(shí)需要使用新的密碼。mysql>UPDATEmysql.userSETpassword=PASSWORD("student")WHEREuser="student4"ANDhost="localhost";mysql>FLUSHPRIVILEGES;任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶在MySQL數(shù)據(jù)庫(kù)中,可以使用DROPUSER語(yǔ)句刪除用戶,也可以直接在mysql.user表中刪除用戶及其相關(guān)權(quán)限。(1)用DROPUSER語(yǔ)句刪除用戶。使用DROPUSER語(yǔ)句刪除用戶以及權(quán)限信息時(shí)必須擁有DROP權(quán)限。該語(yǔ)句的語(yǔ)法格式如下。3.
刪除用戶DROPUSERuser[,user]任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.12】使用DROPUSER語(yǔ)句刪除學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中名為student3、student4的用戶,其主機(jī)名都是localhost。(2)用DELETE語(yǔ)句刪除用戶。使用DELETE語(yǔ)句刪除用戶時(shí)必須擁有對(duì)mysql.user表的DELETE權(quán)限,使用該語(yǔ)句可直接將用戶的信息從user表中刪除。該語(yǔ)句的基本語(yǔ)法格式如下。mysql>DROPUSER'student3'@'localhost','student4'@'localhost';DELETEFROMuserWHEREhost='localhost'ANDuser='username';任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶【例題7.13】使用DELETE語(yǔ)句刪除學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中名為student2的用戶,其主機(jī)名是localhost。執(zhí)行完上述語(yǔ)句后還要使用FLUSHPRIVILEGES語(yǔ)句來(lái)使刪除用戶生效,如下所示。mysql>DELETEFROMmysql.userWHEREHost=’localhost’ANDUser=’student2’;mysql>FLUSHPRIVILEGES任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶7.1.4用MySQLWorkbench圖形化工具創(chuàng)建和管理用戶使用MySQLWorkbench圖形化工具可以創(chuàng)建、修改和刪除用戶賬號(hào),編輯配置文件等?!纠}7.14】使用MySQLWorkbench圖形化工具為學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl創(chuàng)建名為teacher的用戶,密碼為teacher123,然后修改密碼為teacher111,最后刪除teacher用戶。
(1)打開MySQLWorkbench圖形化工具,登錄MySQL服務(wù)器,在導(dǎo)航窗格單擊MANAGEMENT欄的UsersandPrivileges,打開圖7-3所示的用戶和權(quán)限的管理界面,其中會(huì)顯示當(dāng)前MySQL服務(wù)器中的所有用戶。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶
(2)單擊AddAccount按鈕彈出創(chuàng)建用戶窗口,在Login選項(xiàng)卡中設(shè)置用戶名為teacher、認(rèn)證類型為Standard、主機(jī)名為%、密碼為teacher123,單擊Apply按鈕,此時(shí)在窗口左側(cè)可見剛剛創(chuàng)建的teacher用戶,如圖7-4所示。任務(wù)1管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的用戶(4)不再需要的用戶可以直接刪除。如要?jiǎng)h除teacher用戶,只需在用戶列表中選中teacher用戶,單擊下方的Delete按鈕,確認(rèn)刪除即可。單擊Refresh按鈕可刷新用戶列表。(3)在窗口左側(cè)的用戶列表中,選擇用戶teacher,可查看該用戶的用戶名、認(rèn)證類型、主機(jī)名稱、用戶密碼等信息。而且可以對(duì)該用戶信息進(jìn)行修改,如將其密碼修改為teacher111,然后單擊Apply按鈕。任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限7.2.1用命令方式管理權(quán)限授予權(quán)限也稱分配權(quán)限,是指為某個(gè)用戶賦予某些權(quán)限。例如,可以為新建的用戶賦予查詢所有數(shù)據(jù)庫(kù)和表的權(quán)限。在MySQL數(shù)據(jù)庫(kù)中可以使用以下兩種方法給用戶授予權(quán)限。(1)直接操作MySQL的權(quán)限表來(lái)給用戶授予權(quán)限。如在使用INSERT語(yǔ)句向mysql.user表中插入用戶數(shù)據(jù)時(shí)直接為權(quán)限字段賦值。(2)使用GRANT語(yǔ)句給用戶授予權(quán)限。GRANT語(yǔ)句的主要用途是給用戶授權(quán),可以使用它在創(chuàng)建新用戶的同時(shí)進(jìn)行授權(quán)。GRANT語(yǔ)句的基本語(yǔ)法格式如下。1.
授予權(quán)限GRANTpriv_type[(column_list)]ONdatabase.tableTOuser[IDENTIFIEDBY[PASSWORD]'password'][,user[IDENTIFIEDBY[PASSWORD]'password']]…[WITH{GRANTOPTION|resource_option}...【例題7.15】使用GRANT語(yǔ)句為學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl創(chuàng)建名為student5的用戶,指定主機(jī)名為localhost、密碼為student5,該用戶對(duì)所有數(shù)據(jù)庫(kù)的所有表都擁有SELECT的權(quán)限??梢酝ㄟ^(guò)SELECT語(yǔ)句查看該用戶的權(quán)限信息,執(zhí)行如下語(yǔ)句。任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限GRANTSELECTON*.*TO'student5'@'localhost'IDENTIFIEDBY'student5';mysql>SELECT*FROMmysql.userWHEREuser='student5'\G;【例題7.16】使用GRANT語(yǔ)句給學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl的student用戶授予對(duì)所有數(shù)據(jù)庫(kù)中所有表的SELECT、INSERT和UPDATE的權(quán)限,允許該用戶將這些權(quán)限賦予別的用戶。可以使用SELECT語(yǔ)句查詢mysql.user表,并且查看student用戶的信息,執(zhí)行如下語(yǔ)句。任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(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é)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限在MySQL數(shù)據(jù)庫(kù)中查看用戶的權(quán)限有以下兩種方法。(1)使用SELECT語(yǔ)句查看權(quán)限。通過(guò)SELECT語(yǔ)句查看mysql.user權(quán)限表中的記錄,可以查看所有用戶的權(quán)限。這種方式非常簡(jiǎn)單,但必須擁有對(duì)mysql.user表的查詢權(quán)限。2.
查看權(quán)限(2)使用SHOWGRANTS語(yǔ)句查看權(quán)限。SELECT*FROMmysql.user;SHOWGRANTSFOR‘username’@’hostname’;【例題7.17】使用SHOWGRANTS語(yǔ)句查看root用戶的權(quán)限。任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限mysql>SHOWGRANTSFOR‘root’@’localhost’\G;任務(wù)2管理學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)用戶的權(quán)限收回權(quán)限也稱取消權(quán)限,是指取消某個(gè)用戶的某些權(quán)限。數(shù)據(jù)庫(kù)管理員給普通用戶授權(quán)時(shí)一定要特別小心,如果授權(quán)不當(dāng),可能會(huì)給數(shù)據(jù)庫(kù)帶來(lái)嚴(yán)重的后果。如果發(fā)現(xiàn)授予用戶的權(quán)限太多,應(yīng)該盡快將權(quán)限收回。在MySQL中可以使用REVOKE語(yǔ)句實(shí)現(xiàn)取消權(quán)限的功能。REVOKE語(yǔ)句的基本語(yǔ)法格式如下。3.
收回權(quán)限REVOKE語(yǔ)句的語(yǔ)法與GRANT語(yǔ)句非常相似,參數(shù)的意義也相同。使用REVOKE語(yǔ)句可以同時(shí)取消多個(gè)用戶的權(quán)限,每個(gè)
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度某數(shù)據(jù)中心水電暖安全保障服務(wù)合同4篇
- 二零二五年度奶牛養(yǎng)殖金融服務(wù)與風(fēng)險(xiǎn)管理合同3篇
- 2025版實(shí)木地板批發(fā)業(yè)務(wù)供應(yīng)合同范本4篇
- 二零二五年度木材行業(yè)原材料采購(gòu)與倉(cāng)儲(chǔ)服務(wù)合同4篇
- 2025年度門窗行業(yè)知識(shí)產(chǎn)權(quán)保護(hù)合同-@-2
- 二零二五年度卵石開采與環(huán)保治理采購(gòu)合同3篇
- 二零二五年度農(nóng)藥產(chǎn)品國(guó)際貿(mào)易爭(zhēng)端解決合同
- 二零二五年度夜間經(jīng)濟(jì)攤位租賃管理合同
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)門面租賃合同范本4篇
- 二零二五年度外架工程高空作業(yè)人員培訓(xùn)合同
- 開展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025-2030年中國(guó)洗衣液市場(chǎng)未來(lái)發(fā)展趨勢(shì)及前景調(diào)研分析報(bào)告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動(dòng)力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測(cè)試與裝調(diào)》電子教案
- 客戶分級(jí)管理(標(biāo)準(zhǔn)版)課件
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 固定資產(chǎn)盤點(diǎn)報(bào)告醫(yī)院版
評(píng)論
0/150
提交評(píng)論