MongoDB显示当前用户

Jam*_*mes 52 mongodb

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

更新

使用接受的答案作为基础,我将提示更改为包括用户,连接和数据库:

.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 + "> ";
}
Run Code Online (Sandbox Code Playgroud)

结果:

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>
Run Code Online (Sandbox Code Playgroud)

Ori*_*Dar 83

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

db.runCommand({connectionStatus : 1})
Run Code Online (Sandbox Code Playgroud)

这导致像波纹管一样:

{
    "authInfo" : {
            "authenticatedUsers" : [
                    {
                            "user" : "aa",
                            "userSource" : "test"
                    }
            ]
    },
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

一个例子:

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