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