本篇文章給大家分享的是有關(guān)mysql 中怎么實(shí)現(xiàn)權(quán)限控制,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
mysql權(quán)限控制在不同的上下文和不同的操作水平上都可以進(jìn)行控制,他們包括如下幾個(gè)
** 管理權(quán)限可以允許用戶管理mysql server的操作。這些權(quán)限控制是全局的,不是針對(duì)某個(gè)特定的數(shù)據(jù)庫(kù)的
** 數(shù)據(jù)庫(kù)權(quán)限對(duì)應(yīng)到一個(gè)數(shù)據(jù)庫(kù)和里面的對(duì)象。這些權(quán)限被用來(lái)控制特定的數(shù)據(jù)庫(kù)或者全局的,他們能夠應(yīng)用到所有的數(shù)據(jù)庫(kù)
** 數(shù)據(jù)庫(kù)對(duì)象的權(quán)限對(duì)應(yīng)到數(shù)據(jù)庫(kù)表,索引,視圖,和存儲(chǔ)過(guò)程,可以對(duì)數(shù)據(jù)庫(kù)內(nèi)部的某個(gè)對(duì)象進(jìn)行授權(quán)控制。
** 賬號(hào)權(quán)限信息被存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的user,db,tables_priv ,columns_priv ,procs_priv 表中。
** mysql啟動(dòng)的時(shí)候讀取這些信息到內(nèi)存中去,或者在權(quán)限變更生效的時(shí)候,重新讀取到內(nèi)存中去
mysql 賬號(hào)名字由用戶名和主機(jī)名組成。這樣可以允許同已用戶在不同主機(jī)上分別控制權(quán)限。這一部分描述如何分配賬戶名字包括特定的值和模糊
匹配規(guī)則,在sql語(yǔ)句中,create user, grant ,set password的時(shí)候,會(huì)用到這些規(guī)則:
- ‘user_name’@’host_name’ 就是賬戶名字的語(yǔ)法規(guī)則
- 僅僅包含用戶名的賬號(hào)等同于 ‘username’@’%’
- 如果用戶名是合法的字符,用戶名和主機(jī)名不必用引號(hào)引起來(lái)。在你的用戶名包含’-‘這樣的字符的時(shí)候,需要用引號(hào)引起來(lái)。或者說(shuō)主機(jī)名有
通配符的時(shí)候需要引起來(lái)。
- 引號(hào)可以用單引號(hào)也可以用雙引號(hào)。
- 主機(jī)和用戶名必須分別被引號(hào)括起來(lái),如果必須要括的話。
mysql在mysql數(shù)據(jù)庫(kù)中分別用兩個(gè)列去存儲(chǔ)用戶名和主機(jī)名:
- 用戶表每個(gè)賬戶一行記錄,此表也表示了賬號(hào)有哪些全局權(quán)限。
- 其他授權(quán)表表示了賬號(hào)擁有的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)內(nèi)的對(duì)象。這些表都有用戶名和主機(jī)列。每行的賬戶信息和user表的賬戶信息是奕揚(yáng)的。
用戶名和主機(jī)名可以包含特殊字符或者通配符,下面是這些規(guī)則:
用戶名要么是一個(gè)非空字符串字面上必須匹配連接字符串中指名的用戶名,或者一個(gè)空字符串就會(huì)匹配人戶用戶名。空用戶名是一個(gè)匿名用戶。
主機(jī)名也可以又好多形式,或者通配符:
- 主機(jī)名可以是一個(gè)IP地址或者一個(gè)localhost樣的字符串。
- %和sql中的like的效果是一樣的。例如 ’%.mysql.com’ 就會(huì)匹配 a.mysql.com.
當(dāng)你嘗試去連接到mysql服務(wù)器,服務(wù)器基于下面兩點(diǎn)條件去接受或者拒絕連接:
- 你的身份標(biāo)識(shí)以及正確的密碼
- 你的賬號(hào)是否被鎖定了
服務(wù)器先校驗(yàn)密碼是否正確,然后校驗(yàn)是否鎖定。任何一個(gè)步驟失敗,服務(wù)器將會(huì)拒絕連接。如果通過(guò)校驗(yàn),服務(wù)器接受連接,然后進(jìn)入第二階段并且等候請(qǐng)求。
認(rèn)證檢查先檢查user表的三個(gè)列,host,user,password。鎖定狀態(tài)是在user表的account_locked列中記錄著的。賬號(hào)鎖定狀態(tài)可以通過(guò)alter user語(yǔ)句來(lái)變更。
你的身份由兩部分來(lái)組成,你連接的客戶主機(jī)以及你的mysql用戶名。如果用戶名不空,則必須全字符匹配才可以,如果用戶名是空的,則匹配任何用戶。如果用戶表匹配到一個(gè)空用戶名,這個(gè)用戶被認(rèn)為是一個(gè)匿名用戶,二不是客戶實(shí)際提供的。這意味著空用戶名是用來(lái)進(jìn)一步檢查用的也就是階段2.
密碼可以為空,這個(gè)不是一個(gè)通配符,不意味著匹配任何密碼。它的意思是用戶必須無(wú)密碼連接。如果服務(wù)起授權(quán)一個(gè)客戶都安使用一個(gè)插件,這樣
該插件實(shí)現(xiàn)的認(rèn)證體系或許沒(méi)有用密碼列。在這樣的情況下,外部密碼也可以用來(lái)去認(rèn)證mysql服務(wù)器。
非空密碼都是加密存儲(chǔ)的,mysql沒(méi)有存儲(chǔ)任何明文密碼。并且用戶提供的密碼也是被加密的。這個(gè)加密的密碼后來(lái)在連接過(guò)程中,來(lái)檢查密碼是否正確。
從mysql的觀點(diǎn)來(lái)看,加密的密碼才是真正的密碼,所以不要告訴任何人這個(gè)加密的密碼。
如果在user表中有多行被匹配,服務(wù)器必須決定用哪一個(gè),它的規(guī)則是這樣的:
- 任何時(shí)候服務(wù)器讀取用戶表到內(nèi)存中的時(shí)候,它會(huì)排序。
- 服務(wù)器檢查的伺候服務(wù)器按行順序去檢查
- 服務(wù)器使用第一個(gè)匹配的行
服務(wù)器排序的規(guī)則是無(wú)通配符的在前面,統(tǒng)配的在后面。
當(dāng)通過(guò)了連接校驗(yàn),你和服務(wù)器建立了連接后,服務(wù)器進(jìn)入權(quán)限控制的第二個(gè)階段。你的每個(gè)請(qǐng)求,服務(wù)器決定出你想做什么操作,然后檢查你是否有
權(quán)限去做。此時(shí),grant 表的privilege列就該出場(chǎng)了。這些列可以出自 user,db,tables_priv,columns_priv,procs_priv。不再細(xì)講這些表了。
當(dāng)服務(wù)器啟動(dòng)的時(shí)候,grant表的數(shù)據(jù)被讀入內(nèi)存。如果你使用賬戶管理語(yǔ)句去更新權(quán)限控制,服務(wù)器將會(huì)知道這些變更,然后重新讀取它們。如果你
直接用sql語(yǔ)句去更新這些表,你的變更不會(huì)生效,直到你重新啟動(dòng)服務(wù)器或者你告訴服務(wù)器去重建緩存。
你可以通過(guò)執(zhí)行一個(gè)刷新權(quán)限操作來(lái)通知服務(wù)器重建緩存。下面三個(gè)語(yǔ)句都可以達(dá)到效果:
- flush_privileges
- mysqladmin_flush-privileges
- mysqladmin_reload
如果啟動(dòng)參數(shù)是 –skip-grant-tables ,那么服務(wù)器不再校驗(yàn)任何權(quán)限,很不安全。
以上就是mysql 中怎么實(shí)現(xiàn)權(quán)限控制,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞名稱:mysql中怎么實(shí)現(xiàn)權(quán)限控制-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article18/ehpgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站收錄、建站公司、微信小程序、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容