參考:https://www.cnblogs.com/swordfall/p/10841418.html
說明:操作前可以把mongo配置的認(rèn)證關(guān)閉,重啟,配置完成后在啟用認(rèn)證配置,啟動(dòng)mongo
一.進(jìn)入mong安裝的bin目錄下,創(chuàng)建一個(gè)有g(shù)rant權(quán)限的用戶,如root權(quán)限的用戶
./mongo
use admin
db.createUser({user:"admin",pwd:"123456",roles:["root"]})
校驗(yàn)(打印1表示成功)
db.auth('admin','123456')
user:用戶名
pwd:密碼
db:指定該用戶的數(shù)據(jù)庫,admin是用于權(quán)限控制的數(shù)據(jù)庫,如果沒有需要新建一個(gè)
roles:指定用戶的角色,可以用一個(gè)空數(shù)組給新用戶設(shè)定空角色;在roles字段,可以指定內(nèi)置角色和用戶定義的角色。role里的角色可以選:
Built-In Roles(內(nèi)置角色):
1. 數(shù)據(jù)庫用戶角色:read、readWrite;
2. 數(shù)據(jù)庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復(fù)角色:backup、restore;
5. 所有數(shù)據(jù)庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級用戶角色:root
// 這里還有幾個(gè)角色間接或直接提供了系統(tǒng)超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內(nèi)部角色:__system
具體角色的功能:
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)限
二.創(chuàng)建所有數(shù)據(jù)庫管理用戶
db.createUser({ user: "all", pwd: "all", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
三.創(chuàng)建單個(gè)數(shù)據(jù)庫用戶及權(quán)限修改/刪除
3.1.創(chuàng)建
use test
db.createUser({user: "admin", pwd: "123456", roles: [{ role: "readWrite", db: "test" }]})
3.1.1查看show users
{
"_id" : "test.admin",
"user" : "admin",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
3.2 修改(追加權(quán)限)
db.grantRolesToUser("admin",[{ role: "dbAdmin", db: "test"}])
3.2.1查看show users
{
"_id" : "test.admin",
"user" : "admin",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
},
{
"role" : "dbAdmin",
"db" : "test"
}
]
}
3.3 修改(替換權(quán)限)
db.updateUser("admin",[{ role: "read", db: "test"}])
3.3.1查看show users
{
"_id" : "test.admin",
"user" : "admin",
"db" : "test",
"roles" : [
{
"role" : "read",
"db" : "test"
}
]
}
3.4刪除權(quán)限
db.revokeRolesFromUser("admin",[{ role: "readWrite", db: "test"}])
3.5修改用戶密碼
db.changeUserPassword('admin','66666');