2017-03-31 551 views
1

我在DB myNewDBMongoDB为什么db.auth不会切换用户?

[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" 
    } 
    ] 
} 

管理员用户,当我尝试为超级管理员进行身份验证:它似乎工作

[myNewDB] user: root>db.auth("superAdmin","superAdmin123") 
1 
[myNewDB] user: root> 

但我仍然作为连接用户“根”,应该我不被认证为:

[myNewDB] user: superAdmin> 

UPDATE

^h ERE是我monger.js

prompt = function() { 
    database = db.getName() 
    user = db.runCommand({connectionStatus : 
    1}).authInfo.authenticatedUsers[0] 
    if (user) { 
     return "["+ database +"] " + "user: " + user.user + ">" 
    } 
    return "["+ database +"] " + ">" 
} 

回答

2

我假设你使用的是蒙戈外壳,而你可能使用.mongorc.js文件,该文件是你如何获得定制提示与当前用户和数据库的显示。

我建议你看看你的.mongorc.js文件和/或在这里分享。验证时提示应该改变。有关示例.mongorc.js文件,请参见this thread

编辑: 进一步,我怀疑你正在运行的情况下,你可以对多个数据库进行身份验证。而你的.mongorc.js可能是天真地抓住第一个用户。尝试再次运行您的示例并运行db.runCommand({connectionStatus : 1}),这将显示多个用户。

+0

非常感谢... MongoDB doc对于发现它的人来说并不那么容易理解...... db.runCommand({connectionStatus:1})。有效地向2个数据库显示2个经过验证的用户...感谢提示和链接... – erwin

相关问题