燁竹
MongoDB沒(méi)有默認(rèn)管理員賬號(hào)献起,所以要先添加管理員賬號(hào)征唬,再開啟權(quán)限認(rèn)證。
切換到admin數(shù)據(jù)庫(kù),添加的賬號(hào)才是管理員賬號(hào)
用戶只能在用戶所在數(shù)據(jù)庫(kù)登錄扶歪,包括管理員賬號(hào)
管理員可以管理所有數(shù)據(jù)庫(kù),但是不能直接管理其他數(shù)據(jù)庫(kù)妹萨,要先在admin數(shù)據(jù)庫(kù)認(rèn)證后才可以;
添加管理員賬號(hào)
[root@c160 ~]# mongo
> use admin #切換到admin數(shù)據(jù)庫(kù)
switched to db admin
> db.system.users.find(); #用戶表沒(méi)有數(shù)據(jù)
> show users;
> db.createUser( #創(chuàng)建管理員賬號(hào)admin
{
user:"root",
pwd:"123456",
roles:[{role:"userAdminAnyDatabase",db:"admin"}]
}
)
開啟權(quán)限驗(yàn)證
修改配置文件加上auth=true參數(shù)炫欺,開啟認(rèn)證,需重啟生效
> show dbs #顯示所有數(shù)據(jù)庫(kù)失敗品洛,還沒(méi)認(rèn)證
2017-11-30T22:47:12.341+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:781:19
shellHelper@src/mongo/shell/utils.js:671:15
@(shellhelp2):1:1
> use admin //切換到admin數(shù)據(jù)庫(kù)
switched to db admin
> db.auth('root','123456'); //在admin數(shù)據(jù)庫(kù)認(rèn)證成功
1
> show dbs
admin 0.000GB
local 0.000GB
添加普通用戶
> use mydb //創(chuàng)建mydb數(shù)據(jù)庫(kù)
switched to db mydb
#創(chuàng)建yezhu用戶
> db.createUser(
{
user: "yezhu",
pwd: "123456",
roles: [ { role: "readWrite", db: "mydb" } ]
}
)
> db.auth('yezhu','123456') #認(rèn)證成功
1
修改用戶權(quán)限
db.updateUser( "yezhu",
{
"roles" : [
{
"role" : "read",
"db" : "mydb"
}
]
}
)
修改用戶密碼
db.changeUserPassword('yezhu','abc123');
MongoDB數(shù)據(jù)庫(kù)角色說(shuō)明:
內(nèi)建的角色
數(shù)據(jù)庫(kù)用戶角色:read、readWrite;
數(shù)據(jù)庫(kù)管理角色:dbAdmin帽揪、dbOwner、userAdmin转晰;
集群管理角色:clusterAdmin、clusterManager蔗崎、clusterMonitor、hostManager蚁趁;
備份恢復(fù)角色:backup、restore他嫡;
所有數(shù)據(jù)庫(kù)角色:readAnyDatabase庐完、readWriteAnyDatabase、userAdminAnyDatabase门躯、dbAdminAnyDatabase
超級(jí)用戶角色:root // 這里還有幾個(gè)角色間接或直接提供了系統(tǒng)超級(jí)用戶的訪問(wèn)(dbOwner 、userAdmin讶凉、userAdminAnyDatabase)
內(nèi)部角色:__system
角色說(shuō)明:
Read:允許用戶讀取指定數(shù)據(jù)庫(kù)
readWrite:允許用戶讀寫指定數(shù)據(jù)庫(kù)
dbAdmin:允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建荷憋、刪除,查看統(tǒng)計(jì)或訪問(wèn)system.profile
userAdmin:允許用戶向system.users集合寫入勒庄,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建瘫里、刪除和管理用戶
clusterAdmin:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限谨读。
readAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限
readWriteAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫權(quán)限
userAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用拨脉,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
dbAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用塑径,賦予用戶所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限。
root:只在admin數(shù)據(jù)庫(kù)中可用统舀。超級(jí)賬號(hào),超級(jí)權(quán)限