MongoDB已經(jīng)使用很長一段時間了目胡,基于MongoDB的數(shù)據(jù)存儲也一直沒有使用到權限訪問(MongoDB默認設置為無權限訪問限制)狼纬,因為考慮到數(shù)據(jù)安全的原因特地花了一點時間研究了一下纠修,網(wǎng)上搜出來的解決方法大都是3.0以下的版本的镊辕,所以不適合3.0+以上的版本。我現(xiàn)在用的版本是MongoDB3.2.7,在windows10系統(tǒng)上進行的驗證逼肯,估計在win7/win8上應該類似。
和其它數(shù)據(jù)庫一樣桃煎,權限的管理都差不多一樣篮幢。mongodb存儲所有的用戶信息在admin 數(shù)據(jù)庫的集合system.users中,保存用戶名为迈、密碼和數(shù)據(jù)庫信息三椿。mongodb默認不啟用授權認證,只要能連接到該服務器葫辐,就可連接到mongod搜锰。若要啟用安全認證,需要更改配置文件參數(shù)auth
1耿战、首先蛋叼,不使用--auth參數(shù)啟動MongoDB
systemLog:
? ? destination: file
? ? path: C:\data\dblog\mongod.log
? ? logAppend: truestorage:
? ? journal:
? ? ? ? enabled: true? ? dbPath: C:\data\db
net:
? ? port: 27017#security:
? ? #authorization: enabled
mongod -f C:\data\mongodb.conf
? 2、啟動mongo, 啟用admin數(shù)據(jù)庫
3剂陡、建立一個超級用戶admin狈涮,命令如下:
db.createUser(?
??{?
????user:?"admin",?
????pwd:?"admin123",?
????roles: [ { role:?"userAdminAnyDatabase", db:?"admin"?} ]?
??}?)
4、查看用戶集合
db.system.users.find()
5鸭栖、現(xiàn)在啟用auth
在重啟mongod之前歌馍,修改配置文件mongo.config,在最下面加入這么一行
auth = on
? 重啟mongod
mongod -f C:\data\mongodb.conf?
然后重啟mongo,啟用admin數(shù)據(jù)庫晕鹊,
顯示所有數(shù)據(jù)庫 : show dbs, 發(fā)現(xiàn)已經(jīng)沒有權限了
啟用 auth
db.auth('admin', 'admin123') ?返回1表示成功
再次執(zhí)行show dbs
6骆姐、 啟用ta數(shù)據(jù)庫,查看該數(shù)據(jù)庫集合
很遺憾沒有權限捏题,admin雖然是超級管理員,但是對具體的數(shù)據(jù)庫肉渴,還是需要有對應的用戶公荧,用戶是和數(shù)據(jù)庫走的,因此還需要建立ta數(shù)據(jù)庫的用戶
建立針對ta數(shù)據(jù)庫的用戶
db.createUser({user:'test1',pwd:'test1',roles:[{role:'readWrite',db:'ta'}]})
需要注意的是在建立ta數(shù)據(jù)庫用戶的時候一定要先啟用ta數(shù)據(jù)庫同规,否則會出現(xiàn)問題
use ta
執(zhí)行?db.auth('test1','test1')
然后再對ta數(shù)據(jù)庫進行相應的操作循狰。