mongodb內(nèi)置角色:
用戶屬于何種角色讯壶,可以理解為用戶擁有何種權(quán)限?
在創(chuàng)建用戶時(shí)湾盗,是需要綁定到角色鹏溯。
角色表中,普通數(shù)據(jù)庫淹仑,admin數(shù)據(jù)庫:可以理解為針對(duì)某一普通數(shù)據(jù)庫設(shè)置用戶權(quán)限丙挽,而設(shè)置在admin數(shù)據(jù)庫當(dāng)中的用戶角色,是針對(duì)的所有數(shù)據(jù)庫而言匀借。
舉個(gè)例子:
創(chuàng)建一個(gè)用戶颜阐,對(duì)hello這個(gè)數(shù)據(jù)擁有all權(quán)限(也就是角色表中的dbowner),并且可以對(duì)所有數(shù)據(jù)擁有只讀權(quán)限(也就是權(quán)限表中的readAnyDatabase)吓肋。
普通數(shù)據(jù)庫凳怨,意味著在設(shè)置用戶角色時(shí),db關(guān)鍵字只能是其他創(chuàng)建的數(shù)據(jù)庫
admin數(shù)據(jù)庫是鬼,意味著在設(shè)置用戶角色時(shí)肤舞,db關(guān)鍵字只能是admin數(shù)據(jù)庫
測(cè)試權(quán)限:
h1用戶只能以admin數(shù)據(jù)登錄,對(duì)所有數(shù)據(jù)庫操作權(quán)限是readAnyDatabase均蜜,對(duì)hello數(shù)據(jù)操作權(quán)限是dbOwner
h1用戶不能以hello數(shù)據(jù)庫登錄李剖,報(bào)錯(cuò),認(rèn)證失敗
查看設(shè)置的權(quán)限:
h1解釋如上
h2用戶只能以hello數(shù)據(jù)庫登錄囤耳,對(duì)hello數(shù)據(jù)庫擁有所有的權(quán)限篙顺,
h3用戶只能以admin數(shù)據(jù)庫登錄,對(duì)hello數(shù)據(jù)庫擁有所有的權(quán)限充择,但是需要?jiǎng)?chuàng)建添加一次德玫,不會(huì)干擾到數(shù)據(jù)。
總結(jié):
1椎麦、創(chuàng)建Mongodb數(shù)據(jù)的的用戶宰僧,全部都是保存在admin數(shù)據(jù)庫,system.user中观挎。
2琴儿、admin數(shù)據(jù)庫的角色權(quán)限查刻,是針對(duì)所有數(shù)據(jù)庫的,建議是在admin數(shù)據(jù)庫狀態(tài)下創(chuàng)建凤类。
3、普通數(shù)據(jù)庫的角色權(quán)限普气,是針對(duì)某一個(gè)數(shù)據(jù)庫的谜疤,某數(shù)據(jù)庫狀態(tài)下創(chuàng)建。
4现诀、在哪個(gè)數(shù)據(jù)庫狀態(tài)下創(chuàng)建夷磕,此用戶連接時(shí)就連哪個(gè)數(shù)據(jù)庫即可。
需要注意:
在普通數(shù)據(jù)庫狀態(tài)下創(chuàng)建admin數(shù)據(jù)庫角色權(quán)限仔沿,db選擇是admin,需要此用戶是否有admin庫的角色權(quán)限坐桩,才能創(chuàng)建。
cli命令行登錄數(shù)據(jù)庫:
# 第一次指定登錄數(shù)據(jù)庫封锉,
mongo --port 27017 -u myadmin -p 'admin' --authenticationDatabase 'admin'
# 連接上數(shù)據(jù)庫之后
use admin
db.auth(username,passwd)
# 之后就可以
mongo --host 192.168.2.176
db.auth