




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫原理與應用基礎第13章 MySQL權限管理第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗第13章 MySQL權限管理為了保證數據庫的安全,MySQL數據庫提供了完善的管理機制和操作手段。MySQL數據庫中的用戶分為普通用戶和root用戶,用戶類型不同,其具體的權限也會有所不同。root用戶是超級管理員,擁有所有的權限;普通用戶只能擁有創建用戶時賦予它的權限。本章介紹MySQL數據庫中的用戶權限管理,主要包括3部分內容,它們分別是權限管理表、用戶管理和權限管理。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗訪問控制為滿足mysql服務器的安全基礎,考慮以下內容:1.多數用戶只需要對表進行讀和寫,但少數用戶需要能創建和刪除表;2.某些用戶需要讀表,但可能不需要更新表;3.可能想允許用戶添加數據,但不允許他們刪除數據;4.某些用戶(管理員)可能需要處理用戶賬號的權限,但多數用戶不需要;5.可能想讓用戶通過存儲過程訪問數據,但不允許他們直接訪問數據;6.可能想根據用戶登錄的地點限制對某些功能的訪問。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗權限表mysql服務器通過mysql權限來來控制用戶對數據庫的訪問,安裝mysql數據庫成功后,會自動安裝多個數據庫。mysql權限表存放在名稱為mysql的數據庫里。常用到的表有user、db、table_priv、columns_priv、column_priv和procs_priv。user表user表示mysql中最終的一個權限表。可以使用desc語句來查看user的基本結構。user列主要分為4個部分:用戶列、權限列、安全列和資源控制列。用的最多的就是用戶列和權限列。權限普通權限:用于對數據庫的操作。管理權限:對數據庫進行管理的操作。user表當用戶進行連接時,權限表的存取過程有以下兩個階段:先從user表中的host、user和password這3個字段中判斷連接的ip、用戶名稱和密碼是否存在于表中,如果存在,則通過身份驗證,否則拒絕連接。如果通過身份驗證,按照以下權限的順序得到數據庫權限: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字段標識可以用于驗證用戶身份的插件,如果該字段為空,服務器使用內建授權驗證機制驗證用戶身份。user表4)資源控制列資源控制列的字段用來限制用戶使用的資源,包含4個字段,分別為:max_questions:用戶每小時允許執行的查詢操作次數。max_updates:用戶每小時允許執行的更新操作次數。max_connections:用戶每小時允許執行的連接操作次數。max_user_connections:單個用戶可以同時具有的連接次數。這些字段的默認值為0,表示沒有限制。db表和host表db表和host表也是mysql數據庫中非常重要的權限表。db表中存儲了用戶對某個數據庫的操作權限,決定用戶能從哪個主機存取哪個數據庫;host表中存儲了某個主機對數據庫的操作權限,配合db權限表對給定主機上數據庫級操作權限做更細致的控制。這兩個權限表不受grant和revoke語句的影響。db表比較常用,host表一般很少使用。db表和host表結構相似,可以使用desc語句來查看這兩個表的基本結構。字段大致可以分為兩類:用戶列和權限列。db表和host表1)用戶列db表的用戶列有3個字段:host、db和user。這3個字段分別表示主機名、數據庫名和用戶名;host表的用戶列有兩個字段:host和db。這兩個字段分別表示主機名和數據庫名。host表是db表的擴展。如果db表中找不到host字段的值,就需要到host表中去尋找。但是host表很少用到,通常db表的設置已經可以滿足權限控制要求了。db表和host表2)權限列db表和host表的權限列大致相同,表中create_routine_priv和alter_routine_priv這兩個字段表明用戶是否有創建和修改存儲過程的權限。user表中的權限是針對所有數據庫的。如果user表中的select_priv字段取值為y,那么該用戶可以查詢所有數據庫中的表;如果為某個用戶只設置了查詢test表的權限,那么user表的select_priv字段的取值為n。而這個select權限則記錄在db表中。db表中select_priv字段的取值將會是y。由此可知,用戶先根據user表的內容獲取權限,然后再根據db表的內容獲取權限。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個字段分別表示主機名、數據庫名、用戶名和表名。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用來指定對哪些數據列具有操作權限。mysql中權限的分配是按照user表、db表、tables_priv表和columns_priv表的順序進行分配的。數據庫系統中,先判斷user表中的值是否為y,如果user表中的值是y,就不需要檢查后面的表了;如果user表中的值為n,則依次檢查db表、tables_priv表和columns_priv表。procs_priv表procs_priv表可以對存儲過程和存儲函數進行權限設置。可以使用desc語句來查看procs_priv表的基本結構。procs_priv表包含8個字段:host、db、user、routine_name、routine_type、grantor、proc_priv和timestamp等。各個字段的說明如下:host、db和user字段分別表示主機名、數據庫名和用戶名。routine_name字段表示存儲過程或存儲函數的名稱。routine_type字段表示存儲過程或存儲函數的類型。該字段有兩個值,分別是function和procedure。function表示是一個存儲函數;procedure表示是一個存儲過程。grantor字段存儲插入或修改該記錄的用戶。proc_priv字段表示擁有的權限,包括execute、alterroutine、grant3種。timestamp字段存儲記錄更新的時間。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗用戶管理mysql用戶賬號和信息存儲在名為mysql的mysql數據庫中。這個數據庫里有一個名為user的數據表,包含了所有用戶賬號,并且它用一個名為user的列存儲用戶的登錄名。一般不需要直接訪問mysql數據庫和表,但有時需要直接訪問。在需要獲得所有用戶賬號列表時,可使用以下代碼實現:usemysql;selectuserfromuser;添加用戶作為一個新安裝的系統,當前只有一個名為root的用戶。這個用戶是在成功安裝mysql服務器后,由系統創建的,并且被賦予了操作和管理mysql的所有權限。root用戶有對整個mysql服務器完全控制的權限。1、使用createuse創建用戶賬號2、使用Insert語句新建普通用戶3、使用grant語句來新建普通用戶添加用戶1.使用createuse創建用戶賬號用createuser語句來創建一個或多個mysql賬戶,并設置相應的口令語法格式:createuseruseridentifiedby[password]'password'[,useridentifiedby[password]'password']…語法說明如下:user:指定創建用戶賬號,其格式為'user_name'@'hostname'。user_name是用戶名,host_name為主機名,即用戶連接mysql時所在主機的名字。如果在創建的過程中,只給出了賬中的用戶名,而沒指定主機名,則主機名會默認為是“%”,表示一組主機。identifiedby子句:用于指定用戶賬號對應的口令,若該用戶賬號無口令,則可省略此子句。添加用戶使用createuse創建用戶賬號可選項password:用于指定散列口令(“散列”,其英文是“hash”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。),即若使用明文設置口令時,需忽略password關鍵字;如果不想以明文設置口令,且知道password()函數返回給密碼的散列值,則可以在此口令設置語句中指定此散列值,但需要加上關鍵字password。password:指令用戶賬號的口令,在identifiedby關鍵字或password關鍵字之后。給定的口令值可以是由字母和數字組成的明文,也可以是通過password()函數得到的散列值。添加用戶(1)要使用createuser語句,必須擁有mysql中mysql數據庫的insert權限或全局createuser權限。(2)使用createuser語句創建一個用戶賬號后,會在系統自身的mysql數據庫的user表添加一條新記錄。如果創建的賬戶已經存在,則語句執行會出現錯誤。(3)如果兩個用戶具有相同的用戶名和不同的主機名,mysql會將他們視為不同的用戶,并允許為這兩個用戶分配不同的權限集合。(4)如果createuser語句的使用中,沒有為用戶指定口令,那么mysql允許該用戶可以不使用口令登錄系統,然而從安全的角度而言,不推薦這種做法。(5)新創建的用戶擁有的權限很少。他們可以登錄到mysql,只允許進行不需要權限的操作,不能使用use語句來讓其他用戶已經創建的任何數據庫成為當前數據庫,因而無法訪問相關數據庫的表。添加用戶2、使用Insert語句新建普通用戶可以使用Insert語句直接將用戶信息添加到mysql.user表中,但需要有對user表的插入權限。由于user表中的字段非常的多,插入數據時,要保證沒有默認值的字段一定要給出值,所以插入數據時,至少要插入以下6個字段的值,即host,user,password,ssl_cipher,x09_issuer,x509_subject。添加用戶3、使用grant語句來新建普通用戶可以使用grant語句來創建新的用戶,在創建用戶時可以為用戶授權。grant語句是mysql中非常重要的一個命令,不僅可以創建用戶、授予權限、還可以修改密碼。查看用戶語法格式:select*frommysql.userwherehost=’host_name’anduser=‘user_name’其中,‘*’代表mysql數據庫中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語句修改一個或多個已經存在的mysql用戶賬號。倘若系統中舊賬戶不存在或者新賬戶已存在,則語句執行會出現錯誤。要使用renameuser語句,必須擁有mysql中mysql數據庫的update權限或全局createuser權限。語法格式:renameuserold_usertonew_user[,old_usertonew_user]…語法說明如下:(1)old_user:系統中已經存在的mysql用戶賬號。(2)new_user:新的mysql用戶賬號。修改用戶口令1)使用mysqladmin命令來修改密碼mysqladmin–uusernameppassword(其中password為關鍵字)2)修改mysql數據庫下的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參數需要刪除的用戶,有用戶名和主機組成。dropuser語句可以同時刪除多個用戶,各個用戶用逗號隔開。2、使用delete語句來刪除普通用戶刪除后,還是需要用flush命令重新加載權限。第13章 MySQL權限管理訪問控制權限表用戶管理賬戶權限管理知識點小結本章實驗賬戶權限管理權限授予新建的mysql用戶必須被授權,可以使用grant語句來實現。語法格式:grantpriv_type[(column_list)][,priv_type[(column_list)]]…on[object_type]priv_leveltouser_specification[,user_specification]…[withwith_option…]賬戶權限管理語法說明如下:(1)priv_type:用于指定權限的名稱,如select、update、delete等數據庫操作。(2)選項column_list:用于指定權限要授予該表中哪些具體的列。(3)on子句:用于指定權限授予的對象和級別,如可在on關鍵字后面給出要授予權限的數據庫名或表名等。(4)可選項object_type:用于指定權限授予的對象類型,包括表、函數和存儲過程,分別用關鍵字table、function和procedure標識。賬戶權限管理語法說明如下:(5)priv_level:用于指定權限的級別。可以授予的權限有如下幾組:①列權限,其和表中的一個具體列相關。②表權限,其和一個具體表中的所有數據相關。③數據庫權限,其和一個具體的數據庫中的所有表相關。④用戶權限,其和mysql中所有的數據庫相關。賬戶權限管理對應地,在grant語句中可用于指定權限級別的值有這樣幾類格式:*:表示當前數據庫中的所有表。*.*:表示所有數據庫中的所有表。db_name.*:表示某個數據庫中的所有表,db_name指定數據庫名db_name.tbl_name:表示某個數據庫中的某個表或視圖,db_name指定數據庫名,tbl_name指定表名或視圖名。tbl_name:表示某個表或視圖,tbl_name指定表名或視圖名。db_name.routine_name:表示某個數據庫中的某個存儲過程或函數。routine_name指定存儲過程名或函數名。賬戶權限管理(6)to子句:用來設定用戶的口令,以及指定被授予權限的用戶user。若在to子句中給系統中存在的用戶指定口令,則新密碼會將原密碼覆蓋;如果權限被授予給一個不存在的用戶,mysql會自動執行一條createuser語句來創建這個用戶,但同時必須為該用戶指定口令。由此可見,grant語句亦可以用于創建用戶賬號。(7)user_specification:to子句中的具體描述部分,其與createuser語句中的user_specification部分一樣。(8)with子句:grant語句的最后可以使用with子句,為可選項,其用于實現權限的轉移或限制。賬戶權限管理Grant命令要求至少提供以下信息:(1)要授予的權限;(2)被授予訪問權限的數據庫或表;(3)用戶名。賬戶權限管理grant語句中priv_type的使用說明如下:授予表權限時,priv_type可以指定為以下值:·select:表示授予用戶可以使用select語句訪問特定表的權限。·insert:表示授予用戶可以使用insert語句向一個特定表中添加數據行的權限。·delete:表示授予用戶可以使用delete語句從一個特定表中刪除數據行的權限。·update:表示授予用戶可以使用update語句修改特定數據表中值的權限。·references:表示授予用戶可以創建一個外鍵來參照特定數據表的權限。·create:表示授予用戶可以使用特定的名字創建一個數據表的權限。·alter:表示授予用戶可以使用altertable語句修改數據表的權限。·index:表示授予用戶可以再表上定義索引的權限。·drop:表示授予用戶可以刪除數據表的權限。·all或allprivileges:表示所有的權限名。授予列權限時,priv_type的值只能指定為select、insert和update,同時權限的后面還需要加上列名列表colimn_list.授予數據庫權限時,priv_type可以指定為以下值:select、insert、delete、update等。權限的轉移和限制權限的轉移與限制可以通過在grant語句中使用with子句來實現。1)轉移權限如果將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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自行車比賽場所在線平臺行業跨境出海戰略研究報告
- 運動和平大使行業跨境出海戰略研究報告
- 云南野生菌干貨市場行業深度調研及發展戰略咨詢報告
- 山岳大川探訪旅游合同
- 合同債權轉讓協議二零二五年
- 促銷活動合同書二零二五年
- 海外研究生學習心得體會
- 二零二五版商標權許可使用合同
- 水利工程突發事件處理措施及預案
- 行紀合同書范例
- 某連鎖藥店的營銷策略研究
- 聚乙烯塑料袋檢驗記錄新
- 《建筑樁基技術規范》JGJ94-94送審報告
- 員工入職確認單
- 土地評估剩余法測算表
- 中小跨徑橋梁結構健康監測技術講稿PPT(107頁)
- HG第四章顯示儀表
- 二五公式驗光法
- 圖書館智能照明控制系統設計-畢業論文
- 園林綠化工程施工組織機構方案
- 室內智能加濕器設計說明
評論
0/150
提交評論