在創(chuàng)建用戶時遇到了 Error: couldn't add user: No role named userAdminAnyDatabase@xttblog : 異常問題兽埃。今天把這個問題的解決辦法分享給大家墩蔓!
整個錯誤異常信息如下:
Error: couldn't add user: No role named userAdminAnyDatabase@xttblog : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.createUser@src/mongo/shell/db.js:1290:15 @(shell):1:1
大概的意思是說,我的 xttblog 這個庫沒有 userAdminAnyDatabase 這個角色晤锹。
因為userAdminAnyDatabase 這個角色只能使用于 admin 這個庫钻趋。
也就是說對于 admin 庫弹灭,你可以正確的執(zhí)行下面的語句。
use admin
db.createUser(
{
user: "xttblog",
pwd: "test",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
對于非 admin 庫辜限,不能擁有 clusterAdmin皇拣、readAnyDatabase、readWriteAnyDatabase列粪、userAdminAnyDatabase审磁、dbAdminAnyDatabase 這些角色。
use xttblog
db.createUser(
{
user: "xttblog",
pwd: "test",
roles: [ { role: "dbAdmin", db: "xttblog" } ]
}
)
上面的語句可以正確的執(zhí)行岂座。
MongoDB 目前內(nèi)置了 7 個角色态蒂。
數(shù)據(jù)庫用戶角色:read、readWrite;
數(shù)據(jù)庫管理角色:dbAdmin费什、dbOwner钾恢、userAdmin;
集群管理角色:clusterAdmin鸳址、clusterManager瘩蚪、clusterMonitor、hostManager稿黍;
備份恢復(fù)角色:backup疹瘦、restore;
所有數(shù)據(jù)庫角色:readAnyDatabase巡球、readWriteAnyDatabase言沐、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root酣栈;這里還有幾個角色間接或直接提供了系統(tǒng)超級用戶的訪問(dbOwner 险胰、userAdmin、userAdminAnyDatabase)
內(nèi)部角色:__system
這些角色對應(yīng)的作用如下:
Read:允許用戶讀取指定數(shù)據(jù)庫
readWrite:允許用戶讀寫指定數(shù)據(jù)庫
dbAdmin:允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù)矿筝,如索引創(chuàng)建起便、刪除,查看統(tǒng)計或訪問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)限
原文鏈接:https://blog.csdn.net/kwame211/article/details/96316498