MongoDB为什么db.auth不切换用户?

时间:2017-03-31 17:31:19

标签: mongodb authentication

我在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 +"] " + ">"
 } 

1 个答案:

答案 0 :(得分:1)

我假设您使用的是mongo shell,并且您可能正在使用.mongorc.js文件,这是您通过显示当前用户和数据库获取自定义提示的方式。

我建议您查看您的.mongorc.js文件和/或在此处分享。进行身份验证时,提示应该会更改。有关示例.mongorc.js文件,请参阅this thread

修改: 进一步观察,我怀疑您是否遇到了可以针对多个数据库进行身份验证的情况。你的.mongorc.js可能只是天真地抓住了第一个用户。尝试再次运行您的示例并运行db.runCommand({connectionStatus : 1}),这将显示多个用户。