MongoDB显示当前用户

时间:2014-01-28 19:08:36

标签: mongodb

如何显示我登录mongo shell的当前用户?这很有用,因为可以更改您登录的用户,例如。 db.auth("newuser", "password") - 在交互式shell中。人们很容易失去踪迹。

更新

使用接受的答案作为基础,我将提示更改为包括user,connection和db:

在您的主目录中修改.mongorc.js

function prompt() {
    var username = "anon";
    var user = db.runCommand({connectionStatus : 1}).authInfo.authenticatedUsers[0];
    var host = db.getMongo().toString().split(" ")[2];
    var current_db = db.getName();

    if (!!user) {
        username = user.user;
    }

    return username + "@" + host + ":" + current_db + "> ";
}

结果:

MongoDB shell version: 2.4.8
connecting to: test

anon@127.0.0.1:test> use admin
switched to db admin

anon@127.0.0.1:admin> db.auth("a_user", "a_password")
1

a_user@127.0.0.1:admin>

1 个答案:

答案 0 :(得分:76)

connectionStatus命令显示经过身份验证的用户(如果有的话,还有其他一些数据):

db.runCommand({connectionStatus : 1})

这会产生类似下面的事情:

{
    "authInfo" : {
            "authenticatedUsers" : [
                    {
                            "user" : "aa",
                            "userSource" : "test"
                    }
            ]
    },
    "ok" : 1
}

因此,如果您从shell连接,这基本上是当前用户

您还可以通过覆盖OS用户主目录下prompt文件中的.mongorc.js函数来添加要提示的用户名。粗略地说:

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

一个例子:

$ mongo -u "cc" -p "dd"
MongoDB shell version: 2.4.8
connecting to: test
user: cc>db.auth("aa", "bb")
1
user: aa>