您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL權(quán)限控制的簡(jiǎn)單介紹”,在日常操作中,相信很多人在MySQL權(quán)限控制的簡(jiǎn)單介紹問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MySQL權(quán)限控制的簡(jiǎn)單介紹”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
背景:MySQL-5.7.11-GA
1.MySQL權(quán)限控制的簡(jiǎn)單介紹
2.需求
3.實(shí)現(xiàn)中需要解決的幾個(gè)問(wèn)題
4.初步方案的設(shè)計(jì)
5.改進(jìn)方案的設(shè)想
1.MySQL權(quán)限控制的簡(jiǎn)單介紹
MySQL的權(quán)限控制,從范圍上,由大到小分為三個(gè)級(jí)別:MySQL級(jí),DB級(jí),對(duì)象級(jí);
MySQL級(jí)指的是對(duì)MySQL實(shí)例本身產(chǎn)生影響的操作,包括但不限于修改MySQL的參數(shù),如buffer_pool_size;關(guān)閉/啟動(dòng)MySQL等等,比較明顯的特點(diǎn)在于MySQL級(jí)別的操作權(quán)限沒(méi)有指定具體的數(shù)據(jù)庫(kù)(同樣意味著對(duì)任何MySQL實(shí)例中的數(shù)據(jù)庫(kù)生效,類似于全局權(quán)限的意思),(特殊的情況:創(chuàng)建數(shù)據(jù)庫(kù),雖然會(huì)指定數(shù)據(jù)庫(kù)名,但是這個(gè)數(shù)據(jù)庫(kù)本身不存在,所以也算是MySQL級(jí)的權(quán)限);
DB級(jí)指的是針對(duì)已存在的具體數(shù)據(jù)庫(kù)的操作,包括修改數(shù)據(jù)庫(kù)的字符集,創(chuàng)建或者刪除具體的已存在的數(shù)據(jù)庫(kù)等,比較明顯的特點(diǎn)在于DB級(jí)的操作權(quán)限是限制在特定的數(shù)據(jù)庫(kù)中;
對(duì)象級(jí)的操作主要指影響的是某個(gè)數(shù)據(jù)庫(kù)內(nèi)部的對(duì)象,例如表,索引,存儲(chǔ)過(guò)程等;
不同級(jí)別之間權(quán)限的相互影響:采用交集,即MySQL級(jí)+DB級(jí)+對(duì)象級(jí);
可以得出MySQL權(quán)限設(shè)置有兩個(gè)特點(diǎn),
DB級(jí)和對(duì)象級(jí)的權(quán)限,在設(shè)置的時(shí)候就必須要指明具體的DB和對(duì)象,如果DB和對(duì)象未知,則只能靠MySQL級(jí)的去設(shè)置全局權(quán)限,針對(duì)現(xiàn)有/新創(chuàng)建的DB和對(duì)象生效;
如果在高級(jí)別設(shè)置了權(quán)限,則會(huì)取所有級(jí)別的權(quán)限的交集,比如設(shè)置了create,insert on *.*(MySQL級(jí)別),create on testdb.*(DB級(jí))中,MySQL級(jí)(全局權(quán)限)禁止掉的insert不會(huì)生效,依然可以insert數(shù)據(jù)到testdb的表中;但是設(shè)置了create,insert on testdb.*(DB級(jí))和create on *.*(MySQL級(jí))時(shí),用戶是可以在testdb進(jìn)行insert操作的,意味著在高級(jí)別的權(quán)限上,設(shè)置的--“沒(méi)有insert權(quán)限”并不會(huì)覆蓋低級(jí)別上單獨(dú)賦予的“insert權(quán)限”。
如圖:
權(quán)限控制在MySQL中的實(shí)現(xiàn):具體的權(quán)限設(shè)置存儲(chǔ)于MySQL系統(tǒng)庫(kù)的一些表里面,MySQL級(jí)的設(shè)置存在于user表中,當(dāng)一個(gè)client試圖連接MySQL實(shí)例的時(shí)候,會(huì)先檢查這個(gè)表中的權(quán)限(包括賬戶名,密碼,HOST的驗(yàn)證),通過(guò)之后,才能連接到MySQL實(shí)例。
其他級(jí)別的設(shè)置會(huì)保存在db,tables_priv,column_priv等表里面,具體信息可以在數(shù)據(jù)庫(kù)中查看。
2.需求
希望能夠有一個(gè)“admin”角色,具備root的所有權(quán)限,除了修改MySQL的global設(shè)置和主從設(shè)置等;
3.實(shí)現(xiàn)中需要解決的幾個(gè)問(wèn)題
首先想到的辦法就是:grant all on *.* to admin@'%' with grant option,然后revoke super on *.* from admin@'%',不過(guò)問(wèn)題來(lái)了, 在這種設(shè)置下,admin是可以直接update mysql.user表,然后手動(dòng)添加super權(quán)限的;
而且如果要能創(chuàng)建新的DB,且為新的用戶賦予新DB的各種權(quán)限的話,就需要至少是Create+增刪改查的權(quán)限,且對(duì)象為全局(on *.*),那么同樣的,admin一樣可以修改mysql.user表。
4.初步方案的設(shè)計(jì)
使用shell腳本,在里面添加sudo mysql -u -p -e來(lái)完成創(chuàng)建新DB,創(chuàng)建新用戶,授權(quán)等操作,然后禁止所使用的系統(tǒng)用戶對(duì)這個(gè)腳本的cat,vim,vi等文本操作權(quán)限;
這種方案的問(wèn)題也不少:其他的用戶可以登錄DB Server;腳本中保存的root密碼可能會(huì)被自身不熟悉的方式獲?。籩tc...
5.改進(jìn)方案的設(shè)想
如果有個(gè)web就好了,能夠屏蔽所有服務(wù)器端的細(xì)節(jié)和操作,在頁(yè)面上點(diǎn)點(diǎn)點(diǎn)就做完了_(:з」∠)_
到此,關(guān)于“MySQL權(quán)限控制的簡(jiǎn)單介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。