成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MongoDB開啟權(quán)限認證

30e8336b8229 / 1537人閱讀

摘要:默認是不開啟權(quán)限認證的,而我也是一直這么做的。自從上次爆發(fā)了贖金門事件,必須重視下的權(quán)限認證了。開啟認證也很簡單,在配置文件默認是里面加入這樣一行就行了。

MongoDB version: v3.4.4

MongoDB默認是不開啟權(quán)限認證的,而我也是一直這么做的。自從上次MongoDB爆發(fā)了贖金門事件,必須重視下MongoDB的權(quán)限認證了。

開啟認證也很簡單,在配置文件(默認是/etc/mongodb.conf)里面加入auth = true這樣一行就行了。

這時你重啟MongoDB服務(wù)進入mongo shell都是沒問題的。但是如果你想插入一條數(shù)據(jù),那么問題來了:

use foo;
db.bar.insert({"faf": "faf"})
WriteResult({
        "writeError" : {
                "code" : 13,
                "errmsg" : "not authorized on foo to execute command { insert: "bar", documents: [ { _id: ObjectId("5938e7f63be90aa05e12aecc"), faf: "faf" } ], ordered: true }"
        }
})

說明權(quán)限認證生效了,一個沒有認證通過的用戶再也不能使用數(shù)據(jù)庫了(即使能進mongo shell)。

那么問題又來了,我現(xiàn)在沒有用戶咋辦?這是一個雞和蛋的問題。怎么在沒有用戶的情況下新建用戶?

MongoDB的開發(fā)者早已經(jīng)想到了這一步。MongoDB自帶一個數(shù)據(jù)庫叫admin,這個數(shù)據(jù)庫用來管理所有數(shù)據(jù)庫的,類似于MySQL的mysql數(shù)據(jù)庫。如果這個數(shù)據(jù)庫的管理員賬戶還沒有建立,那么任何人都可以在admin數(shù)據(jù)庫里面新建管理員賬戶。

use admin;
db.createUser({user: "admin", pwd: "adminer", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})

先進入admin數(shù)據(jù)庫,然后運行db.createUser方法新建用戶。createUser方法必須傳入一個有user(用戶名)、pwd(密碼),roles(角色)三個屬性的JSON對象。user、pwd都可以理解,那這個角色又是啥?當(dāng)我們嘗試去管理一個數(shù)據(jù)庫的時候發(fā)現(xiàn),有很多權(quán)限需要處理,比如:數(shù)據(jù)庫讀、數(shù)據(jù)庫寫、數(shù)據(jù)庫用戶管理等等權(quán)限,我想建一個用戶的話,給一個用戶賦權(quán)限就十分復(fù)雜了?,F(xiàn)在一種流行的方式是:我先定義一個角色,這個角色對應(yīng)一組權(quán)限,那么我管理用戶時就只要賦予一個角色就行了。真是方便了不少。那么這個userAdminAnyDatabase角色就是這樣一個超級角色,有這個角色的用戶可以給任意數(shù)據(jù)庫新建用戶,并且賦予任何角色,真是個狠角色。那么我們應(yīng)該知道了,基本上所有的第一個建立的用戶的角色都應(yīng)該是userAdminAnyDatabase,好處就是以后可以用這個用戶來管理其他用戶了。

那么MongoDB內(nèi)置了哪些角色呢?按照類別來分主要有:

Database User Roles

Database Administration Roles

Cluster Administration Roles

Backup and Restoration Roles

All-Database Roles

Superuser Roles

Internal Role

十分復(fù)雜,為了簡單起見,就講其中兩個:read、readWrite也就是常用的讀數(shù)據(jù)庫和讀寫數(shù)據(jù)庫。

建立了admin用戶之后,還必須登錄才行(必須在admin數(shù)據(jù)庫才能登錄),db.auth("admin", "adminer"),我再切換到foo數(shù)據(jù)庫就可以給foo數(shù)據(jù)庫創(chuàng)建用戶啦(這里有一個不大不小的坑,就是你要給其他數(shù)據(jù)庫創(chuàng)建用戶,都必須先到admin數(shù)據(jù)庫,認證剛才新建的那個admin用戶,然后再切換到其他數(shù)據(jù)庫才能建立用戶)!

use foo;
db.createUser({user: "foo", pwd: "bar", roles: [{role: "readWrite", db: "foo"}]})
db.auth("foo", "bar")

就可以往數(shù)據(jù)庫里面寫入啦?。。?/p>

原文鏈接:生信人

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19016.html

相關(guān)文章

  • 一步一步搭建react應(yīng)用-mongodb開啟身份認證

    摘要:一步一步構(gòu)建一個應(yīng)用開篇地址通過不認證的方式啟動連接實例創(chuàng)建用戶超級管理員重啟,加上訪問控制認證連接時認證連接后認證為其他庫創(chuàng)建用戶添加對有讀寫權(quán)限,對有讀權(quán)限 [一步一步構(gòu)建一個react應(yīng)用-開篇](https://segmentfault.com/a/11... git地址 通過不認證的方式啟動Mongodb mongod --port 3007 --config mongo...

    fredshare 評論0 收藏0
  • 一步一步搭建react應(yīng)用-mongodb開啟身份認證

    摘要:一步一步構(gòu)建一個應(yīng)用開篇地址通過不認證的方式啟動連接實例創(chuàng)建用戶超級管理員重啟,加上訪問控制認證連接時認證連接后認證為其他庫創(chuàng)建用戶添加對有讀寫權(quán)限,對有讀權(quán)限 [一步一步構(gòu)建一個react應(yīng)用-開篇](https://segmentfault.com/a/11... git地址 通過不認證的方式啟動Mongodb mongod --port 3007 --config mongo...

    elarity 評論0 收藏0
  • mongoDB安裝與操作

    摘要:一下安裝數(shù)據(jù)庫進入官網(wǎng),選擇相應(yīng)的版本下載,安裝時默認勾選安裝服務(wù)和修改一些數(shù)據(jù)庫配置,如已有數(shù)據(jù)庫連接工具,可取消默認勾選的安裝。 一、Win下安裝數(shù)據(jù)庫 進入mongo官網(wǎng),選擇相應(yīng)的msi版本下載,安裝時默認勾選安裝MongoD服務(wù)和修改一些數(shù)據(jù)庫配置,如已有數(shù)據(jù)庫連接工具Robo 3T,可取消默認勾選的compass安裝。 若啟動服務(wù)報mp錯誤,可修改binmongod.cfg...

    zorpan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<