最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MySQL中的存取權(quán)限

 更新時(shí)間:2015年07月07日 11:53:25   投稿:goldensun  
這篇文章主要介紹了詳解MySQL中的存取權(quán)限,針對(duì)用戶(hù)使用數(shù)據(jù)庫(kù)權(quán)限分配的問(wèn)題做出說(shuō)明,需要的朋友可以參考下

看到很多網(wǎng)友提出關(guān)于MySQL登錄不上服務(wù)器的問(wèn)題,包括有的是在PHP中調(diào)用MySQL時(shí)發(fā)生的不能登錄MySQL數(shù)據(jù)庫(kù)服務(wù)器的問(wèn)題,以為是PHP出了問(wèn)題。其實(shí)是MySQL權(quán)限的問(wèn)題。

  MySQL的權(quán)限系統(tǒng)在MySQL的手冊(cè)中是很長(zhǎng)的一章,我把它打印出來(lái)足足印了20多頁(yè)!這里就將我對(duì)它的理解簡(jiǎn)要地寫(xiě)出來(lái),希望能對(duì)剛剛接觸MySQL的同志有點(diǎn)幫助;有說(shuō)得不對(duì)的地方,也請(qǐng)同志們指出。

  在我了解了MySQL的權(quán)限機(jī)制后,不由得不贊嘆它的嚴(yán)密與巧妙;也許所有的數(shù)據(jù)庫(kù)系統(tǒng)都是如此罷,只是別的大型數(shù)據(jù)庫(kù)把權(quán)限做得不需超級(jí)管理員親自干預(yù)數(shù)據(jù)表而已。

  MySQL的權(quán)限保存在名為mysql的數(shù)據(jù)庫(kù)中,有user、db、host、tables_priv、columns_priv 等五個(gè)表。

  首先,限制用戶(hù)的登錄的,只有 user 表,其中最常用的是 user、host、password這三個(gè)字段。其他的select_priv、update_priv、…… 這些字段分別表示該用戶(hù)是否有select、update、……等權(quán)限,這些字段設(shè)置為'Y'表示該用戶(hù)擁有對(duì)應(yīng)的權(quán)限,'N'表示用戶(hù)沒(méi)有對(duì)應(yīng)的權(quán)限。注意,這里指定的權(quán)限是全局的,一旦你在user表中給了一個(gè)用戶(hù)select或update權(quán)限,他就對(duì)這臺(tái)服務(wù)器上任何數(shù)據(jù)庫(kù)、任何表?yè)碛猩鲜鰴?quán)限!其中當(dāng)然包括mysql數(shù)據(jù)庫(kù)??!這意味著他可以通過(guò)更改user表里的數(shù)據(jù)非法地獲取更大的權(quán)限?。?!這是非常可怕的,所以建議除了給root用戶(hù)外,不要在user表中分配權(quán)限。特別的,你可以建立一個(gè)幾乎跟root擁有同樣權(quán)限的用戶(hù)(密碼可不要告訴別人喲?。┰谕浟藃oot密碼時(shí)就用得到了。在添加一個(gè)用戶(hù)時(shí),如果不指定權(quán)限字段的值,它們的默認(rèn)值都是'N',——也就是這個(gè)用戶(hù)什么權(quán)限也沒(méi)有——你可以放心的在user表中添加用戶(hù),因?yàn)榧词顾艿卿涍M(jìn)來(lái),卻什么也干不了。

  還有一個(gè)應(yīng)該注意的問(wèn)題就是user表中的password字段。試想,既然root用戶(hù)可以瀏覽mysql數(shù)據(jù)庫(kù),可以看到user表的password字段,是不是就是看到了其他用戶(hù)的密碼呢?不是的!user表的password字段保存的是用password()函數(shù)加密了的用戶(hù)密碼,當(dāng)用戶(hù)登錄時(shí),服務(wù)器將收到的用戶(hù)輸入的密碼用password()函數(shù)加密,加密得到的字串與user表password字段如能匹配,則認(rèn)為密碼正確。password()沒(méi)有逆運(yùn)算,所以任何人無(wú)法從一個(gè)加密的字串得到密碼的明文。同時(shí),如果你手工修改user表,別忘了在更新password字段時(shí)一定要用password()函數(shù)加密。例如,你要允許一位名為 bill 的用戶(hù)登錄你的服務(wù)器,你給他設(shè)定一個(gè) 12345 的密碼,則應(yīng)該:

insert into user (user,host,password) values ('bill','%',password('12345'));

如果你直接

insert into user (user,host,password) values ('bill','%','12345');

的話,恐怕他登不上你的服務(wù)器,也會(huì)到奧索網(wǎng)上發(fā)帖子問(wèn)的。

  注意,每當(dāng)手工操作了跟權(quán)限有關(guān)的數(shù)據(jù)表以后,要執(zhí)行一條 flush privileges 命令才能使其生效。

  下面的問(wèn)題就是如何給用戶(hù)分配權(quán)限了。如果你要給一個(gè)用戶(hù)開(kāi)一個(gè)數(shù)據(jù)庫(kù),并把有關(guān)這個(gè)數(shù)據(jù)庫(kù)的所有或部分權(quán)限開(kāi)放給他,這就用到了db表。db表的意義在于,當(dāng)一個(gè)用戶(hù)請(qǐng)求一個(gè)查詢(xún)時(shí),檢測(cè)該用戶(hù)對(duì)于他的查詢(xún)所針對(duì)的數(shù)據(jù)庫(kù)是否擁有進(jìn)行該查詢(xún)操作的權(quán)限,有,則允許查詢(xún);沒(méi)有,則進(jìn)一步咨詢(xún)tables_priv表。db表的最常用字段是 user、db、和那一大堆有關(guān)權(quán)限的字段。user,不用說(shuō)了,就是那個(gè)用戶(hù)的用戶(hù)名,跟user表中的對(duì)應(yīng);db,就是要分給他的數(shù)據(jù)庫(kù)名。然后就把要給他的權(quán)限相對(duì)應(yīng)的權(quán)限字段設(shè)為'Y'。同樣,這些字段的值在不指定的時(shí)候默認(rèn)是'N'。你也可以用GRANT/REVOKE命令給用戶(hù)分配權(quán)限,可以是這樣的:

grant select,update,insert,delete,creater,alter,drop,index on bill.* to bill;

  這樣就把針對(duì)bill這個(gè)數(shù)據(jù)庫(kù)的幾乎所有的權(quán)限給了用戶(hù)bill。這里沒(méi)有給的只是grant權(quán)限,關(guān)于這個(gè)權(quán)限,建議不要輕易給人,因?yàn)橛脩?hù)有了grant權(quán)限,也就可以將權(quán)限分配給其他用戶(hù)。值得慶幸的是,擁有g(shù)rant權(quán)限的用戶(hù)能而且只能將他自己已經(jīng)擁有的權(quán)限分配給別人。

  使用GRANT/REVOKE命令更改了權(quán)限后,不須執(zhí)行 flush privileges 命令就可以使更改生效。

  上面討論的是給一個(gè)用戶(hù)完全開(kāi)放一個(gè)數(shù)據(jù)庫(kù)的問(wèn)題,如果只想給一個(gè)用戶(hù)一個(gè)特定的表的權(quán)限,就是 tables_priv 表發(fā)揮作用的時(shí)候啦。這里的關(guān)鍵性字段是user、db、table_name 。顯而易見(jiàn)的,要給一個(gè)用戶(hù)指定一個(gè)特定的數(shù)據(jù)庫(kù)中特定表的權(quán)限,三個(gè)關(guān)鍵要素就是:哪個(gè)用戶(hù)(user)、哪個(gè)數(shù)據(jù)庫(kù)(db)、哪個(gè)表(table_name)。它的機(jī)理跟db表是類(lèi)似的,我不必再重復(fù)。唯一不同的是這里用了一個(gè)SET類(lèi)型的字段 table_priv 來(lái)指定用戶(hù)對(duì)這個(gè)表權(quán)限,SET的成員有 SELECT, UPDATE, INSERT, DELETE, ALTER, CREATE, DROP, GRANT, INDEX, REFERENCE 等,你可以選擇其中任意一個(gè)或幾個(gè)分配給用戶(hù)。

  在上述提及的幾個(gè)權(quán)限表中以及未提及的host表中,都有一個(gè)host字段,它用來(lái)區(qū)分來(lái)自不同主機(jī)的、用戶(hù)名可能相同的人,或者是給同一個(gè)用戶(hù)從不同的主機(jī)連接時(shí)給予不同的權(quán)限。這種用法不很常用,但為了安全起見(jiàn),建議root用戶(hù),如果不需要從遠(yuǎn)程連接,請(qǐng)將他的host設(shè)為 localhost,其他的則可以設(shè)為 % ,即任何主機(jī)。

相關(guān)文章

  • MySQL解決SQL注入的另類(lèi)方法詳解

    MySQL解決SQL注入的另類(lèi)方法詳解

    這篇文章主要介紹了MySQL解決SQL注入的另類(lèi)方法,結(jié)合實(shí)例形式列舉分析了幾種防止SQL注入的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-04-04
  • 解決MySQL數(shù)據(jù)庫(kù)意外崩潰導(dǎo)致表數(shù)據(jù)文件損壞無(wú)法啟動(dòng)的問(wèn)題

    解決MySQL數(shù)據(jù)庫(kù)意外崩潰導(dǎo)致表數(shù)據(jù)文件損壞無(wú)法啟動(dòng)的問(wèn)題

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)意外崩潰導(dǎo)致表數(shù)據(jù)文件損壞無(wú)法啟動(dòng)的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Mysql中的觸發(fā)器定義與使用

    Mysql中的觸發(fā)器定義與使用

    MySQL?的觸發(fā)器和存儲(chǔ)過(guò)程一樣,都是嵌入到?MySQL?中的一段程序,是?MySQL?中管理數(shù)據(jù)的有力工具,本文給大家詳細(xì)介紹mysql觸發(fā)器的定義語(yǔ)法知識(shí),感興趣的朋友一起看看吧
    2022-11-11
  • Mysql添加字段或索引導(dǎo)致鎖表的處理方式

    Mysql添加字段或索引導(dǎo)致鎖表的處理方式

    我們后端開(kāi)發(fā)人員在實(shí)現(xiàn)業(yè)務(wù)修改時(shí),經(jīng)常需要更新數(shù)據(jù)庫(kù)表結(jié)構(gòu),如增加字段、修改字段長(zhǎng)度等等,下面這篇文章主要給大家介紹了關(guān)于Mysql添加字段或索引導(dǎo)致鎖表的處理方式,需要的朋友可以參考下
    2023-05-05
  • mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的用法區(qū)別分析

    mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的用法區(qū)別分析

    這篇文章主要介紹了mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的用法區(qū)別,結(jié)合實(shí)例形式分析了mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的相關(guān)用法區(qū)別與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • mysql批量新增和存儲(chǔ)的方法實(shí)例

    mysql批量新增和存儲(chǔ)的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于mysql批量新增和存儲(chǔ)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 最新評(píng)論

    长顺县| 城口县| 开封市| 利川市| 靖远县| 济宁市| 河南省| 新余市| 洪雅县| 攀枝花市| 历史| 嘉祥县| 石城县| 嵊州市| 花垣县| 麻江县| 汝城县| 海口市| 东平县| 长治县| 抚宁县| 汶川县| 民乐县| 通山县| 雅安市| 新密市| 通辽市| 临江市| 石楼县| 南部县| 郎溪县| 霸州市| 娄底市| 漳浦县| 久治县| 紫阳县| 郴州市| 浑源县| 察隅县| 临安市| 凉山|