




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據(jù)庫原理與應用基礎第13章 MySQL權限管理第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗第13章 MySQL權限管理為了保證數(shù)據(jù)庫的安全,MySQL數(shù)據(jù)庫提供了完善的管理機制和操作手段。MySQL數(shù)據(jù)庫中的用戶分為普通用戶和root用戶,用戶類型不同,其具體的權限也會有所不同。root用戶是超級管理員,擁有所有的權限;普通用戶只能擁有創(chuàng)建用戶時賦予它的權限。本章介紹MySQL數(shù)據(jù)庫中的用戶權限管理,主要包括3部分內(nèi)容,它們分別是權限管理表、用戶管理和權限管理。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗訪問控制為滿足mysql服務器的安全基礎,考慮以下內(nèi)容:1.多數(shù)用戶只需要對表進行讀和寫,但少數(shù)用戶需要能創(chuàng)建和刪除表;2.某些用戶需要讀表,但可能不需要更新表;3.可能想允許用戶添加數(shù)據(jù),但不允許他們刪除數(shù)據(jù);4.某些用戶(管理員)可能需要處理用戶賬號的權限,但多數(shù)用戶不需要;5.可能想讓用戶通過存儲過程訪問數(shù)據(jù),但不允許他們直接訪問數(shù)據(jù);6.可能想根據(jù)用戶登錄的地點限制對某些功能的訪問。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗權限表mysql服務器通過mysql權限來來控制用戶對數(shù)據(jù)庫的訪問,安裝mysql數(shù)據(jù)庫成功后,會自動安裝多個數(shù)據(jù)庫。mysql權限表存放在名稱為mysql的數(shù)據(jù)庫里。常用到的表有user、db、table_priv、columns_priv、column_priv和procs_priv。user表user表示mysql中最終的一個權限表??梢允褂胐esc語句來查看user的基本結構。user列主要分為4個部分:用戶列、權限列、安全列和資源控制列。用的最多的就是用戶列和權限列。權限普通權限:用于對數(shù)據(jù)庫的操作。管理權限:對數(shù)據(jù)庫進行管理的操作。user表當用戶進行連接時,權限表的存取過程有以下兩個階段:先從user表中的host、user和password這3個字段中判斷連接的ip、用戶名稱和密碼是否存在于表中,如果存在,則通過身份驗證,否則拒絕連接。如果通過身份驗證,按照以下權限的順序得到數(shù)據(jù)庫權限:user、db、table_priv、colums_priv。這幾個表的權限依次遞減,全局權限覆蓋局部權限。user表1)用戶字段:user表中的host、user和password字段都屬于用戶字段。2)權限字段user表中包含幾十個與權限有關以priv結尾的字段,這些權限字段決定了用戶的權限,這些權限包括基本權限、修改和添加權限、關閉服務器權限、超級權限和加載權限等。3)安全字段:安全列只有6個字段兩個是ssl相關的:ssl_type和ssl_cipher,2個是x509相關的:x509_issuer和x509_subject,另外2個是授權插件相關的。ssl用于加密;x509標準可用于標識用戶;plugin字段標識可以用于驗證用戶身份的插件,如果該字段為空,服務器使用內(nèi)建授權驗證機制驗證用戶身份。user表4)資源控制列資源控制列的字段用來限制用戶使用的資源,包含4個字段,分別為:max_questions:用戶每小時允許執(zhí)行的查詢操作次數(shù)。max_updates:用戶每小時允許執(zhí)行的更新操作次數(shù)。max_connections:用戶每小時允許執(zhí)行的連接操作次數(shù)。max_user_connections:單個用戶可以同時具有的連接次數(shù)。這些字段的默認值為0,表示沒有限制。db表和host表db表和host表也是mysql數(shù)據(jù)庫中非常重要的權限表。db表中存儲了用戶對某個數(shù)據(jù)庫的操作權限,決定用戶能從哪個主機存取哪個數(shù)據(jù)庫;host表中存儲了某個主機對數(shù)據(jù)庫的操作權限,配合db權限表對給定主機上數(shù)據(jù)庫級操作權限做更細致的控制。這兩個權限表不受grant和revoke語句的影響。db表比較常用,host表一般很少使用。db表和host表結構相似,可以使用desc語句來查看這兩個表的基本結構。字段大致可以分為兩類:用戶列和權限列。db表和host表1)用戶列db表的用戶列有3個字段:host、db和user。這3個字段分別表示主機名、數(shù)據(jù)庫名和用戶名;host表的用戶列有兩個字段:host和db。這兩個字段分別表示主機名和數(shù)據(jù)庫名。host表是db表的擴展。如果db表中找不到host字段的值,就需要到host表中去尋找。但是host表很少用到,通常db表的設置已經(jīng)可以滿足權限控制要求了。db表和host表2)權限列db表和host表的權限列大致相同,表中create_routine_priv和alter_routine_priv這兩個字段表明用戶是否有創(chuàng)建和修改存儲過程的權限。user表中的權限是針對所有數(shù)據(jù)庫的。如果user表中的select_priv字段取值為y,那么該用戶可以查詢所有數(shù)據(jù)庫中的表;如果為某個用戶只設置了查詢test表的權限,那么user表的select_priv字段的取值為n。而這個select權限則記錄在db表中。db表中select_priv字段的取值將會是y。由此可知,用戶先根據(jù)user表的內(nèi)容獲取權限,然后再根據(jù)db表的內(nèi)容獲取權限。tables_priv表tables_priv表可以對單個表進行權限設置,用來指定表級權限。這里指定的權限適用于一個表的所有列。用戶可以用desc語句查看表結構。tables_priv表有8個字段:host、db、user、table_name、grantor、timestamp、table_priv和column_priv。各個字段說明如下:host、db、user和table_name等4個字段分別表示主機名、數(shù)據(jù)庫名、用戶名和表名。grantor表示修改該記錄的用戶。timestamp字段表示修改該記錄的時間。table_priv字段表示對表進行操作的權限,這些權限包括select、insert、update、delete、create、drop、grant、references、index和alter。column_priv字段表示對表中的列進行操作的權限,這些權限包括select、insert、update和references。columns_priv表columns_priv表可以對表中的某一列進行權限設置columns_priv表只有7個字段,分別是host、db、user、table_name、column_name、timestamp和column_priv。其中,column_name用來指定對哪些數(shù)據(jù)列具有操作權限。mysql中權限的分配是按照user表、db表、tables_priv表和columns_priv表的順序進行分配的。數(shù)據(jù)庫系統(tǒng)中,先判斷user表中的值是否為y,如果user表中的值是y,就不需要檢查后面的表了;如果user表中的值為n,則依次檢查db表、tables_priv表和columns_priv表。procs_priv表procs_priv表可以對存儲過程和存儲函數(shù)進行權限設置??梢允褂胐esc語句來查看procs_priv表的基本結構。procs_priv表包含8個字段:host、db、user、routine_name、routine_type、grantor、proc_priv和timestamp等。各個字段的說明如下:host、db和user字段分別表示主機名、數(shù)據(jù)庫名和用戶名。routine_name字段表示存儲過程或存儲函數(shù)的名稱。routine_type字段表示存儲過程或存儲函數(shù)的類型。該字段有兩個值,分別是function和procedure。function表示是一個存儲函數(shù);procedure表示是一個存儲過程。grantor字段存儲插入或修改該記錄的用戶。proc_priv字段表示擁有的權限,包括execute、alterroutine、grant3種。timestamp字段存儲記錄更新的時間。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗用戶管理mysql用戶賬號和信息存儲在名為mysql的mysql數(shù)據(jù)庫中。這個數(shù)據(jù)庫里有一個名為user的數(shù)據(jù)表,包含了所有用戶賬號,并且它用一個名為user的列存儲用戶的登錄名。一般不需要直接訪問mysql數(shù)據(jù)庫和表,但有時需要直接訪問。在需要獲得所有用戶賬號列表時,可使用以下代碼實現(xiàn):usemysql;selectuserfromuser;添加用戶作為一個新安裝的系統(tǒng),當前只有一個名為root的用戶。這個用戶是在成功安裝mysql服務器后,由系統(tǒng)創(chuàng)建的,并且被賦予了操作和管理mysql的所有權限。root用戶有對整個mysql服務器完全控制的權限。1、使用createuse創(chuàng)建用戶賬號2、使用Insert語句新建普通用戶3、使用grant語句來新建普通用戶添加用戶1.使用createuse創(chuàng)建用戶賬號用createuser語句來創(chuàng)建一個或多個mysql賬戶,并設置相應的口令語法格式:createuseruseridentifiedby[password]'password'[,useridentifiedby[password]'password']…語法說明如下:user:指定創(chuàng)建用戶賬號,其格式為'user_name'@'hostname'。user_name是用戶名,host_name為主機名,即用戶連接mysql時所在主機的名字。如果在創(chuàng)建的過程中,只給出了賬中的用戶名,而沒指定主機名,則主機名會默認為是“%”,表示一組主機。identifiedby子句:用于指定用戶賬號對應的口令,若該用戶賬號無口令,則可省略此子句。添加用戶使用createuse創(chuàng)建用戶賬號可選項password:用于指定散列口令(“散列”,其英文是“hash”,也有直接音譯為“哈?!钡?,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。),即若使用明文設置口令時,需忽略password關鍵字;如果不想以明文設置口令,且知道password()函數(shù)返回給密碼的散列值,則可以在此口令設置語句中指定此散列值,但需要加上關鍵字password。password:指令用戶賬號的口令,在identifiedby關鍵字或password關鍵字之后。給定的口令值可以是由字母和數(shù)字組成的明文,也可以是通過password()函數(shù)得到的散列值。添加用戶(1)要使用createuser語句,必須擁有mysql中mysql數(shù)據(jù)庫的insert權限或全局createuser權限。(2)使用createuser語句創(chuàng)建一個用戶賬號后,會在系統(tǒng)自身的mysql數(shù)據(jù)庫的user表添加一條新記錄。如果創(chuàng)建的賬戶已經(jīng)存在,則語句執(zhí)行會出現(xiàn)錯誤。(3)如果兩個用戶具有相同的用戶名和不同的主機名,mysql會將他們視為不同的用戶,并允許為這兩個用戶分配不同的權限集合。(4)如果createuser語句的使用中,沒有為用戶指定口令,那么mysql允許該用戶可以不使用口令登錄系統(tǒng),然而從安全的角度而言,不推薦這種做法。(5)新創(chuàng)建的用戶擁有的權限很少。他們可以登錄到mysql,只允許進行不需要權限的操作,不能使用use語句來讓其他用戶已經(jīng)創(chuàng)建的任何數(shù)據(jù)庫成為當前數(shù)據(jù)庫,因而無法訪問相關數(shù)據(jù)庫的表。添加用戶2、使用Insert語句新建普通用戶可以使用Insert語句直接將用戶信息添加到mysql.user表中,但需要有對user表的插入權限。由于user表中的字段非常的多,插入數(shù)據(jù)時,要保證沒有默認值的字段一定要給出值,所以插入數(shù)據(jù)時,至少要插入以下6個字段的值,即host,user,password,ssl_cipher,x09_issuer,x509_subject。添加用戶3、使用grant語句來新建普通用戶可以使用grant語句來創(chuàng)建新的用戶,在創(chuàng)建用戶時可以為用戶授權。grant語句是mysql中非常重要的一個命令,不僅可以創(chuàng)建用戶、授予權限、還可以修改密碼。查看用戶語法格式:select*frommysql.userwherehost=’host_name’anduser=‘user_name’其中,‘*’代表mysql數(shù)據(jù)庫中user表的所有列,也可以指定特定的列。常用的列名有:host、user、password、select_priv、insert_priv、update_priv、delete_priv、create_priv、drop_priv、grant_priv、references_priv、index_priv等。where后面緊跟的是查詢條件,where語句可有可無,視情而定,這里列舉的條件是host和user兩列。修改用戶賬號可以使用renameuser語句修改一個或多個已經(jīng)存在的mysql用戶賬號。倘若系統(tǒng)中舊賬戶不存在或者新賬戶已存在,則語句執(zhí)行會出現(xiàn)錯誤。要使用renameuser語句,必須擁有mysql中mysql數(shù)據(jù)庫的update權限或全局createuser權限。語法格式:renameuserold_usertonew_user[,old_usertonew_user]…語法說明如下:(1)old_user:系統(tǒng)中已經(jīng)存在的mysql用戶賬號。(2)new_user:新的mysql用戶賬號。修改用戶口令1)使用mysqladmin命令來修改密碼mysqladmin–uusernameppassword(其中password為關鍵字)2)修改mysql數(shù)據(jù)庫下的user表,需要對mysql.user表的修改權限,又有root權限最高,一般情況我們可以使用root用戶登錄后,修改自己或普通用戶的密碼。3)使用set語句來修改密碼setpassword[for'username'@'hostname']=password('new_password');如果不加[for'username'@'hostname'],則修改當前用戶密碼修改后,還是需要用flush命令重新加載權限。刪除用戶刪除用戶的兩種方式1、用dropuser語句來刪除普通用戶dropuser語句來刪除用戶,必須有dropuser權限。dropuseruser[,user]…其中user參數(shù)需要刪除的用戶,有用戶名和主機組成。dropuser語句可以同時刪除多個用戶,各個用戶用逗號隔開。2、使用delete語句來刪除普通用戶刪除后,還是需要用flush命令重新加載權限。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗賬戶權限管理權限授予新建的mysql用戶必須被授權,可以使用grant語句來實現(xiàn)。語法格式:grantpriv_type[(column_list)][,priv_type[(column_list)]]…on[object_type]priv_leveltouser_specification[,user_specification]…[withwith_option…]賬戶權限管理語法說明如下:(1)priv_type:用于指定權限的名稱,如select、update、delete等數(shù)據(jù)庫操作。(2)選項column_list:用于指定權限要授予該表中哪些具體的列。(3)on子句:用于指定權限授予的對象和級別,如可在on關鍵字后面給出要授予權限的數(shù)據(jù)庫名或表名等。(4)可選項object_type:用于指定權限授予的對象類型,包括表、函數(shù)和存儲過程,分別用關鍵字table、function和procedure標識。賬戶權限管理語法說明如下:(5)priv_level:用于指定權限的級別??梢允谟璧臋嘞抻腥缦聨捉M:①列權限,其和表中的一個具體列相關。②表權限,其和一個具體表中的所有數(shù)據(jù)相關。③數(shù)據(jù)庫權限,其和一個具體的數(shù)據(jù)庫中的所有表相關。④用戶權限,其和mysql中所有的數(shù)據(jù)庫相關。賬戶權限管理對應地,在grant語句中可用于指定權限級別的值有這樣幾類格式:*:表示當前數(shù)據(jù)庫中的所有表。*.*:表示所有數(shù)據(jù)庫中的所有表。db_name.*:表示某個數(shù)據(jù)庫中的所有表,db_name指定數(shù)據(jù)庫名db_name.tbl_name:表示某個數(shù)據(jù)庫中的某個表或視圖,db_name指定數(shù)據(jù)庫名,tbl_name指定表名或視圖名。tbl_name:表示某個表或視圖,tbl_name指定表名或視圖名。db_name.routine_name:表示某個數(shù)據(jù)庫中的某個存儲過程或函數(shù)。routine_name指定存儲過程名或函數(shù)名。賬戶權限管理(6)to子句:用來設定用戶的口令,以及指定被授予權限的用戶user。若在to子句中給系統(tǒng)中存在的用戶指定口令,則新密碼會將原密碼覆蓋;如果權限被授予給一個不存在的用戶,mysql會自動執(zhí)行一條createuser語句來創(chuàng)建這個用戶,但同時必須為該用戶指定口令。由此可見,grant語句亦可以用于創(chuàng)建用戶賬號。(7)user_specification:to子句中的具體描述部分,其與createuser語句中的user_specification部分一樣。(8)with子句:grant語句的最后可以使用with子句,為可選項,其用于實現(xiàn)權限的轉(zhuǎn)移或限制。賬戶權限管理Grant命令要求至少提供以下信息:(1)要授予的權限;(2)被授予訪問權限的數(shù)據(jù)庫或表;(3)用戶名。賬戶權限管理grant語句中priv_type的使用說明如下:授予表權限時,priv_type可以指定為以下值:·select:表示授予用戶可以使用select語句訪問特定表的權限?!nsert:表示授予用戶可以使用insert語句向一個特定表中添加數(shù)據(jù)行的權限?!elete:表示授予用戶可以使用delete語句從一個特定表中刪除數(shù)據(jù)行的權限?!pdate:表示授予用戶可以使用update語句修改特定數(shù)據(jù)表中值的權限?!eferences:表示授予用戶可以創(chuàng)建一個外鍵來參照特定數(shù)據(jù)表的權限。·create:表示授予用戶可以使用特定的名字創(chuàng)建一個數(shù)據(jù)表的權限?!lter:表示授予用戶可以使用altertable語句修改數(shù)據(jù)表的權限?!ndex:表示授予用戶可以再表上定義索引的權限。·drop:表示授予用戶可以刪除數(shù)據(jù)表的權限?!ll或allprivileges:表示所有的權限名。授予列權限時,priv_type的值只能指定為select、insert和update,同時權限的后面還需要加上列名列表colimn_list.授予數(shù)據(jù)庫權限時,priv_type可以指定為以下值:select、insert、delete、update等。權限的轉(zhuǎn)移和限制權限的轉(zhuǎn)移與限制可以通過在grant語句中使用with子句來實現(xiàn)。1)轉(zhuǎn)移權限如果將with子句指定為withgrantoption,則表示to子句中所指定的所有用戶都具有把自己所擁有的權限授予其他用戶的權利,而無論那些其他用戶是否擁有該權限。2)限制權限如果with子句中with關鍵字后面緊跟的是max_queries_per_hourcount、max_updates_per_hourcount、max_connections_per_hourcount或max_user_connectionscount中的某一項,則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南中醫(yī)藥大學招聘高層次人才83人+模擬試卷及一套參考答案詳解
- 2025河南省衛(wèi)生健康人才中心招聘4人模擬試卷及答案詳解(奪冠)
- 2025河南洛陽市西工區(qū)第一批公益性崗位招聘100人考前自測高頻考點模擬試題及答案詳解(名校卷)
- 2025廣西梧州職業(yè)學院第一批公開招聘事業(yè)單位實名制人員71人模擬試卷完整參考答案詳解
- 熱力網(wǎng)值班員崗位應急處置技術規(guī)程
- 2025廣西南寧市青少年活動中心招聘專業(yè)工作人員10人(教師)考前自測高頻考點模擬試題含答案詳解
- 家禽人工授精員崗位工藝作業(yè)技術規(guī)程
- 2025鄂托克前旗政府專職消防員招錄15名考前自測高頻考點模擬試題及答案詳解(考點梳理)
- 纖維調(diào)施膠干燥工安全技術規(guī)程
- 熱力管網(wǎng)運行工海外項目適應力考核試卷及答案
- 醫(yī)院中醫(yī)科常見病癥診療規(guī)范
- 《電子商務概論》(第6版) 教案 第11、12章 農(nóng)村電商;跨境電商
- 2025年電氣工程及其自動化專業(yè)考試試卷及答案
- 大象牙膏教學課件
- 【《老年高血壓患者護理措施研究》6600字(論文)】
- 顱腦創(chuàng)傷急性期凝血功能障礙診治專家共識(2024版)解讀
- 2025至2030年中國健康保險市場運行態(tài)勢及行業(yè)發(fā)展前景預測報告
- 沙棘采摘協(xié)議書
- 2026版創(chuàng)新設計高考總復習數(shù)學(人教B版)-學生答案一~五章
- 資產(chǎn)評估學教程(第八版)習題及答案
- 工業(yè)設計課件全套
評論
0/150
提交評論