版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子課件數(shù)據(jù)庫原理及應用教程(基于Linux的MySQL和NoSQL應用)第13章第13章MySQL權限管理數(shù)據(jù)庫原理及應用教程(基于Linux的MySQL和NoSQL應用)CONTENTS訪問控制1權限表2用戶管理3賬戶權限管理4訪問控制113.1 訪問控制為滿足MySQL服務器的安全基礎,考慮以下內容:1.多數(shù)用戶只需要對表進行讀和寫,但少數(shù)用戶需要能創(chuàng)建和刪除表;2.某些用戶需要讀表,但可能不需要更新表;3.可能想允許用戶添加數(shù)據(jù),但不允許他們刪除數(shù)據(jù);4.某些用戶(管理員)可能需要處理用戶賬號的權限,但多數(shù)用戶不需要;5.可能想讓用戶通過存儲過程訪問數(shù)據(jù),但不允許他們直接訪問數(shù)據(jù);6.
2、可能想根據(jù)用戶登錄的地點限制對某些功能的訪問。MySQL的訪問控制就是為用戶提供且僅提供他們所需的訪問權,以此來確保MySQL服務器的安全訪問。建議應該嚴肅對待root登錄的使用權限表2MySQL服務器通過MySQL權限來來控制用戶對數(shù)據(jù)庫的訪問,安裝MySQL數(shù)據(jù)庫成功后,會自動安裝多個數(shù)據(jù)庫。MySQL權限表存放在名稱為MySQL的數(shù)據(jù)庫里。常用到的表有user、db、table_priv、columns_priv、column_priv和procs_priv。13.2.1 user表use表示MySQL中最終的一個權限表,可以使用DESC語句來查看user的基本結構。當用戶進行連接時,權
3、限表的存取過程有以下兩個階段:先從user表中的host、user和password這3個字段中判斷連接的ip、用戶名稱和密碼是否存在于表中,如果存在,則通過身份驗證,否則拒絕連接。用戶列權限列安全列資源控制列普通權限:用于對數(shù)據(jù)庫的操作管理權限:對數(shù)據(jù)庫進行管理的操作13.2.1 user表1)用戶字段 用戶字段 user表中的host、user和password字段都屬于用戶字段。如果通過身份驗證,按照以下權限的順序得到數(shù)據(jù)庫權限:user、db、table_priv、colums_priv。這幾個表的權限依次遞減,全局權限覆蓋局部權限。【例13-1】查詢user表的相關用戶字段selec
4、t host, user, authentication_string from MySQL.user;13.2.1 user表2)權限字段user表中包含幾十個與權限有關以priv結尾的字段,這些權限字段決定了用戶的權限,這些權限不僅包括基本權限、修改和添加權限等,還包含關閉服務器權限、超級權限和加載權限等。不同用戶所擁有的權限可能會有所不同。這些字段的值只有y或n,表示有權限和無權限。默認值是n,可用grant語句為用戶賦予權限【例13-2】查看localhost主機下的用戶的select、insert、update、權限13.2.1 user表3)安全字段安全列只有6個字段,其中兩個是s
5、sl相關的:ssl_type和ssl_cipher,2個是x509相關的:x509_issuer和x509_subject,另外2個是授權插件相關的。ssl用于加密;x509標準可用于標識用戶;plugin字段標識可以用于驗證用戶身份的插件,如果該字段為空,服務器使用內建授權驗證機制驗證用戶身份。【例13-3】可用show variables like have_openssl;語句可以查看have_openssl是否具有ssl功能13.2.1 user表4)資源控制列資源控制列的字段用來限制用戶使用的資源,包含4個字段,分別為:max_questions:用戶每小時允許執(zhí)行的查詢操作次數(shù)。m
6、ax_updates:用戶每小時允許執(zhí)行的更新操作次數(shù)。max_connections:用戶每小時允許執(zhí)行的連接操作次數(shù)。max_user_connections:單個用戶可以同時具有的連接次數(shù)。這些字段的默認值為0,表示沒有限制。一個小時內用戶查詢或者連接數(shù)量超過資源控制限制,用戶將被鎖定,直到下一個小時,才可以再此執(zhí)行對應的操作。13.2.2 db表和host表db表中存儲了用戶對某個數(shù)據(jù)庫的操作權限,決定用戶能從哪個主機存取哪個數(shù)據(jù)庫;host表中存儲了某個主機對數(shù)據(jù)庫的操作權限,配合db權限表對給定主機上數(shù)據(jù)庫級操作權限做更細致的控制。字段大致可以分為兩類:用戶列和權限列。1) 用戶列
7、db表的用戶列有3個字段:host、db和user。這3個字段分別表示主機名、數(shù)據(jù)庫名和用戶名;ost表的用戶列有兩個字段:host和db。這兩個字段分別表示主機名和數(shù)據(jù)庫名。2) 權限列db表和host表的權限列大致相同,表中create_routine_priv和alter_routine_priv這兩個字段表明用戶是否有創(chuàng)建和修改存儲過程的權限。3.1.4 專門的關系運算設有一個學生-課程數(shù)據(jù)庫見表 3-9,它包括以下內容。學生關系 Student(說明:Sno 表示學號,Sname 表示姓名,Ssex 表示性別,Sage 表示年齡,Sdept 表示所在系)課程關系 Course(說明:
8、Cno 表示課程號,Cname 表示課程名)選修關系 Score(說明:Sno 表示學號,Cno 表示課程號,Degree 表示成績)其關系模式如下。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname)Score(Sno,Cno,Degree) 【例】查詢數(shù)學系學生的信息。Sdept=數(shù)學系 (Student)或5=數(shù)學系 (Student)13.2.3 tables_priv表tables_priv表可以對單個表進行權限設置,用來指定表級權限。這里指定的權限適用于一個表的所有列。用戶可以用desc語句查看表結構。tables_priv表有8個
9、字段: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、inse
10、rt、update和references。13.2.3 tables_priv表【例13-4】用desc tables_priv G命令查看結構如下: 13.2.4 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)
11、中,先判斷user表中的值是否為y,如果user表中的值是y,就不需要檢查后面的表了;如果user表中的值為n,則依次檢查db表、tables_priv表和columns_priv表。13.2.5 procs_priv表procs_priv表可以對存儲過程和存儲函數(shù)進行權限設置。可以使用desc語句來查看procs_priv表的基本結構。procs_priv表包含8個字段:host、db、user、routine_name、routine_type、grantor、proc_priv和timestamp等。各個字段的說明如下:host、db和user字段分別表示主機名、數(shù)據(jù)庫名和用戶名。rou
12、tine_name字段表示存儲過程或存儲函數(shù)的名稱。routine_type字段表示存儲過程或存儲函數(shù)的類型。該字段有兩個值,分別是function和procedure。function表示是一個存儲函數(shù);procedure表示是一個存儲過程。grantor字段存儲插入或修改該記錄的用戶。proc_priv字段表示擁有的權限,包括execute、alter routine、grant3種。timestamp字段存儲記錄更新的時間。用戶管理3MySQL用戶賬號和信息存儲在名為MySQL的MySQL數(shù)據(jù)庫中。這個數(shù)據(jù)庫里有一個名為user的數(shù)據(jù)表,包含了所有用戶賬號。在需要獲得所有用戶賬號列表時,
13、可使用以下代碼實現(xiàn):use MySQL;select user from user;13.3.1 添加用戶1. 使用create use創(chuàng)建用戶賬號 user:指定創(chuàng)建用戶賬號,其格式為user_namehost name。password:指令用戶賬號的口令,在identified by關鍵字或password關鍵字之后。給定的口令值可以是由字母和數(shù)字組成的明文,也可以是通過password()函數(shù)得到的散列值。create user user identified by password password ,user identified by password password 13.3
14、.1 添加用戶【例13-5】在MySQL服務器中添加新的用戶,其用戶名分別為zhangmei主機名為localhost,口令設置為明文123 create user語句的使用說明如下:(1)要使用create user語句,必須擁有MySQL中MySQL數(shù)據(jù)庫的insert權限或全局create user權限。(2)創(chuàng)建一個用戶賬號后會在系統(tǒng)自身的MySQL數(shù)據(jù)庫的user表添加一條新記錄。如果創(chuàng)建的賬戶已經(jīng)存在,則語句執(zhí)行會出現(xiàn)錯誤。(3)如果兩個用戶具有相同的用戶名和不同的主機名,MySQL會將他們視為不同的用戶。(4)如果create user語句的使用中,沒有為用戶指定口令,那么MyS
15、QL允許該用戶可以不使用口令登錄系統(tǒng),然而從安全的角度而言,不推薦這種做法。(5)新創(chuàng)建的用戶擁有的權限很少。13.3.1 添加用戶2、使用Insert語句新建普通用戶插入數(shù)據(jù)時,至少要插入以下6個字段的值,即 host, user, password, ssl_cipher, x09_issuer, x509_subject。【例13-6】插入xiaohong用戶,主機名為localhost,密碼是 password(123)執(zhí)行完后,要使用FLUSH PRIVILEGES;命令來使用戶生效,這個命令需要reload權限。13.3.1 添加用戶3、使用grant語句來新建普通用戶可以使用gr
16、ant語句來創(chuàng)建新的用戶,在創(chuàng)建用戶時可以為用戶授權。grant語句是MySQL中非常重要的一個命令,不僅可以創(chuàng)建用戶、授予權限、還可以修改密碼。13.3.2 查看用戶select * from MySQL.user where host=host_name and user=user_name 【例13-7】 查看本地主機上的所有用戶名。select host,user ,authentication_string from MySQL.user; 13.3.4 修改用戶賬號rename user old_user to new_user ,old_user to new_user (1)o
17、ld_user:系統(tǒng)中已經(jīng)存在的MySQL用戶賬號。(2)new_user:新的MySQL用戶賬號?!纠?3-8】將前面例子中用戶zhangmei的名字修改成wangwu。13.3.5 修改用戶口令1)使用MySQLadmin命令來修改密碼MySQLadmin u username -p password 【例13-9】修改root密碼為 “Cau123456“;輸入命令MySQLadmin u root -p password 后,先根據(jù)提示輸入舊密碼,在輸入新密碼和確認新密碼13.3.5 修改用戶口令2)使用set語句來修改密碼set password for usernamehostna
18、me = password(new_password);【例13-10】修改xiaohong密碼為123set password for xiaohonglocalhost = password (123);13.3.5 修改用戶口令3)修改MySQL數(shù)據(jù)庫下的user表,需要對MySQL.user表的修改權限,又有root權限最高,一般情況我們可以使用root用戶登錄后,修改自己或普通用戶的密碼。update MySQL.userset authentication_string =password(new_password)where user=user_name and host = h
19、ost_name;【例13-11】使用update修改xiaohong的密碼為12345613.3.3 刪除用戶1、用drop user語句來刪除普通用戶drop user語句來刪除用戶,必須有drop user權限。drop user user,user【例13-12】刪除xiaohong用戶,其host值為localhost13.3.3 刪除用戶2、使用delete語句來刪除普通用戶【例13-13】刪除wangwu用戶,主機名為localhostdelete from MySQL. user where user = wangwu and host = localhost;賬戶權限管理41
20、3.4.1 權限授予新建的MySQL用戶必須被授權,可以使用grant語句來實現(xiàn)。grant priv_type(column_list) ,priv_type(column_list) on object_type priv_level to user_specification,user_specification with with_option Grant命令要求至少提供以下信息:(1)要授予的權限;(2)被授予訪問權限的數(shù)據(jù)庫或表;(3)用戶名。13.4.1 權限授予【例13-14】授予用戶lili在數(shù)據(jù)庫studentinfo的表student上擁有對列sno和列sname的sel
21、ect權限。可以使用select語句來查看表student中列sno和列sname的數(shù)據(jù),而且目前僅能執(zhí)行這項操作,如果執(zhí)行其他的數(shù)據(jù)庫操作,則會出現(xiàn)錯誤select * from student ; error 1142 (42000) : select command denied to user lililocalhost for table student 13.4.1 權限授予13.4.1 權限授予【例13-15】當前系統(tǒng)中不存在用戶liming和用戶huang,要求創(chuàng)建這兩個用戶,并設置對應的系統(tǒng)登錄口令,同時授予他們在數(shù)據(jù)庫studentInfo的表student上擁有selec
22、t和update的權限。grant select,update on studentInfo.student to liminglocalhost identified by Liming123,huanglocalhost identified by Huang789; 語句成功執(zhí)行后,即可分別使用liming和huang的賬戶登錄MySQL服務器,驗證這兩個用戶是否具有了對表student可以執(zhí)行select和update操作的權限。13.4.1 權限授予【例13-16】授予系統(tǒng)中已存在用戶lili可以在數(shù)據(jù)庫studentinfo中執(zhí)行所有數(shù)據(jù)庫操作的權限。grant all on st
23、udentInfo.* to lililocalhost;13.4.2 權限的轉移和限制1)轉移權限如果將with子句指定為with grant option,則表示to子句中所指定的所有用戶都具有把自己所擁有的權限授予其他用戶的權利,而無論那些其他用戶是否擁有該權限。【例13-17】授予當前系統(tǒng)中一個不存在的用戶zhou在數(shù)據(jù)庫studentInfo的表student上擁有select和update的權限,并允許其可以將自身的這個權限授予其他用戶。使用root登錄MySQL服務器,并在MySQL的命令行客戶端輸入下面的sql語句:grant select,update on studentInfo.stud
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 英文版購銷合同反駁
- 全力確保合同的能力保證
- 影視作品授權放映合同
- 個人借款合同范本簡單明了
- 農(nóng)產(chǎn)品購銷稻谷合同
- 攝影作品授權合同
- 消防設備安裝勞務分包合同
- 環(huán)境監(jiān)測與咨詢服務合同
- 旅游班車服務合同
- 集裝箱購買合同范例
- 人教版六年級上冊數(shù)學《圓》大單元作業(yè)設計
- 【培訓課件】proe工程圖培訓
- 鳥類的遷徙與繁殖方式教學教案
- 航空公司乘務長的述職報告
- 南京市玄武區(qū)2023-2024學年八年級上學期期末歷史試卷(含答案解析)
- 公司轉讓債權股東會決議
- 露天礦設備運行分析報告
- 防高空墜物安全教育課件
- 鄉(xiāng)村的風許俊文賞析-鄉(xiāng)村的風許俊文閱讀答案-記敘文閱讀及答案
- 樓宇消防安全培訓課件
- 電腦繪圖在考古器物繪圖工作中的應用研究
評論
0/150
提交評論