我在DB myNewDB中有一个管理员用户
[admin] user: root>use myNewDB
switched to db myNewDB
[myNewDB] user: root>show users
{
"_id" : "myNewDB.superAdmin",
"user" : "superAdmin",
"db" : "myNewDB",
"roles" : [
{
"role" : "userAdmin",
"db" : "myNewDB"
},
{
"role" : "readWrite",
"db" : "myNewDB"
},
{
"role" : "dbAdmin",
"db" : "myNewDB"
}
]
}
当我尝试以superAdmin身份验证时:它似乎正常工作
[myNewDB] user: root>db.auth("superAdmin","superAdmin123")
1
[myNewDB] user: root>
但我仍然以用户“root”身份连接,我是否应该通过以下身份验证:
[myNewDB] user: superAdmin>
更新
这是我的monger.js
prompt = function() {
database = db.getName()
user = db.runCommand({connectionStatus :
1}).authInfo.authenticatedUsers[0]
if (user) {
return "["+ database +"] " + "user: " + user.user + ">"
}
return "["+ database +"] " + ">"
}
答案 0 :(得分:1)
我假设您使用的是mongo shell,并且您可能正在使用.mongorc.js文件,这是您通过显示当前用户和数据库获取自定义提示的方式。
我建议您查看您的.mongorc.js
文件和/或在此处分享。进行身份验证时,提示应该会更改。有关示例.mongorc.js
文件,请参阅this thread。
修改强>:
进一步观察,我怀疑您是否遇到了可以针对多个数据库进行身份验证的情况。你的.mongorc.js
可能只是天真地抓住了第一个用户。尝试再次运行您的示例并运行db.runCommand({connectionStatus : 1})
,这将显示多个用户。