一、權限列表
Read:允許用戶讀取指定數據庫
readWrite :允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限
二、認證機制:
MONGODB-CR SCRAM-SHA-1
默認認證方式:SCRAM-SHA-1
三、創建
1、首先啓動服務以主服務器方式啓動
mongod -master --auth --port 27017 --dbpath D:\software\MongoDB\mongo
//創建超級管理員,操作其他users
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "root", db: "admin" } ]
}
)
2、然後以主服務器方式啓動、帶訪問控制的 Mongodb
用戶認證:root用戶纔可以賦予其他用戶權限
use admin;
db.auth("root","root")
例如:需要一個所有庫的read權限,用戶adminUser/adminPass
use admin;
db.createUser(
{
user: "adminUser",
pwd: "adminPass",
roles: [ { role: "readAnyDatabase", db: "admin" }
]
}
)
更新adminUser用戶權限,添加了local庫的read權限
db.updateUser( "adminUser",
{
roles: [ { role: "readAnyDatabase", db: "admin" },
{role:"read",db:"local"}
]
}
)
四、測試
直接使用admin庫進行驗證
use admin;
db.auth("adminUser","adminPass");