1、進(jìn)入mongodb的shell :
mongo
2、切換數(shù)據(jù)庫
use admin
3、創(chuàng)建admin超級管理員用戶
db.createUser(
{ user: "admin",
customData:{description:"superuser"},
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
user字段,為新用戶的名字;
pwd字段,用戶的密碼;
cusomData字段,為任意內(nèi)容,例如可以為用戶全名介紹;
roles字段,指定用戶的角色,可以用一個(gè)空數(shù)組給新用戶設(shè)定空角色。在roles字段,可以指定內(nèi)置角色和用戶定義的角色。
超級用戶的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對所有數(shù)據(jù)庫的訪問,僅僅是訪問而已)。
db是指定數(shù)據(jù)庫的名字,admin是管理數(shù)據(jù)庫。
不能用admin數(shù)據(jù)庫中的用戶登錄其他數(shù)據(jù)庫。注:只能查看當(dāng)前數(shù)據(jù)庫中的用戶,哪怕當(dāng)前數(shù)據(jù)庫admin數(shù)據(jù)庫,也只能查看admin數(shù)據(jù)庫中創(chuàng)建的用戶。
4、創(chuàng)建一個(gè)不受訪問的超級用戶
(跳出三界之外,不在五行之中)
db.createUser(
{
user:"root",
pwd:"pwd",
roles:["root"]
}
)
5、創(chuàng)建一個(gè)業(yè)務(wù)數(shù)據(jù)庫管理員用戶
(只負(fù)責(zé)某一個(gè)或幾個(gè)數(shù)據(jù)庫的増查改刪)
> db.createUser({
user:"user001",
pwd:"123456",
customData:{
name:'jim',
email:'jim@qq.com',
age:18,
},
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
'read'// 對其他數(shù)據(jù)庫有只讀權(quán)限,對db001、db002是讀寫權(quán)限
]
})
- Read:允許用戶讀取指定數(shù)據(jù)庫
- readWrite:允許用戶讀寫指定數(shù)據(jù)庫
- dbAdmin:允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問system.profile
- userAdmin:允許用戶向system.users集合寫入,可以在指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶
- clusterAdmin:只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
- readAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限
- readWriteAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限
- userAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限
- dbAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。
- root:只在admin數(shù)據(jù)庫中可用。超級賬號,超級權(quán)限
6、查看創(chuàng)建的用戶
show users 或 db.system.users.find() 或 db.runCommand({usersInfo:"userName"})
7、修改密碼
use admin
db.changeUserPassword("username", "xxx")
8、修改密碼和用戶信息
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
重要的一步
啟用權(quán)限驗(yàn)證(別TM的武裝了大半天,大門還一直開著,還抱怨我方防御塔怎么一直被摧毀)
mongo --auth
或者修改mongo.conf,最后一行添加
#啟用權(quán)限訪問
auth=true
9、重新啟動mongodb
net stop mongodb;
net start mongodb;
- 和用戶管理相關(guān)的操作基本都要在admin數(shù)據(jù)庫下運(yùn)行,要先use admin;
- 如果在某個(gè)單一的數(shù)據(jù)庫下,那只能對當(dāng)前數(shù)據(jù)庫的權(quán)限進(jìn)行操作;
- db.addUser是老版本的操作,現(xiàn)在版本也還能繼續(xù)使用,創(chuàng)建出來的user是帶有root role的超級管理員。