概述
? ? ? ?在MongoDB實(shí)例上開啟訪問權(quán)限控制簿煌,意味著強(qiáng)制要求用戶輸入賬號(hào)密碼進(jìn)行授權(quán)認(rèn)證椎咧。在開啟了訪問權(quán)限控制的MongoDB實(shí)例上诺凡,用戶能進(jìn)行的操作取決于登陸賬號(hào)的角色(roles)变屁。
? ? ? ?MongoDB支持多種授權(quán)認(rèn)證機(jī)制病瞳。下面將介紹如何使用MongoDB默認(rèn)的機(jī)制開啟訪問權(quán)限控制揽咕。
用戶管理員
? ? ? ?在開啟訪問權(quán)限控制時(shí)悲酷,需要確保admin庫(kù)中有一個(gè)被分配了userAdmin或者userAdminAnyDatabase角色的用戶賬號(hào)。這個(gè)賬號(hào)可以管理用戶和角色亲善,比如:創(chuàng)建用戶设易,獲取角色權(quán)限,創(chuàng)建或修改自定義角色等蛹头。
? ? ? ?在訪問權(quán)限控制開啟之前或之后顿肺,都可以執(zhí)行創(chuàng)建用戶的操作。如果你在開啟訪問權(quán)限控制之前沒有創(chuàng)建任何用戶渣蜗,MongoDB提供一個(gè)特有機(jī)制屠尊,讓你能夠在admin庫(kù)中創(chuàng)建管理員賬號(hào)。一旦管理員賬號(hào)創(chuàng)建完畢耕拷,其他賬號(hào)則必須使用該管理員賬號(hào)進(jìn)行創(chuàng)建讼昆。
步驟
? ? ? ?在下面的流程中,首先在尚未開啟訪問權(quán)限控制的MongoDB實(shí)例中添加一個(gè)用戶管理員賬號(hào)斑胜,然后再開啟訪問權(quán)限控制控淡。
1.啟動(dòng)MongoDB服務(wù)(禁用訪問權(quán)限控制)
mongod --port 27017--dbpath /data/db1
2.連接至MongoDB實(shí)例
mongo --port 27017
3.添加管理員賬號(hào)
use admin
db.createUser({user: "myUserAdmin", pwd: "abc123", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})
4.重啟MongoDB實(shí)例,并啟用訪問權(quán)限控制
mongod --auth --port 27017--dbpath /data/db1
5.連接至MongoDB實(shí)例
mongo --port 27017
切換至admin庫(kù)止潘,并登陸
use admin
db.auth("myUserAdmin","abc123")
6.添加普通用戶賬號(hào)
use test
db.createUser({user: "myTester", pwd: "xyz123", roles: [{role: "readWrite", db: "test"}, {role: "read", db: "reporting"}]})
7.使用普通用戶賬號(hào)登陸
mongo --port 27017
use test
db.auth("myTester","xyz123")
向數(shù)據(jù)集中添加紀(jì)錄
db.foo.insert({x:1, y:1})