1. ホーム
  2. mongodb

MongoDB 現在のユーザーを表示する

2023-12-06 15:52:18

質問

mongo シェルにログインしている現在のユーザーを表示するにはどうしたらよいでしょうか。これは知っておくと便利です。なぜなら、ログインしているユーザーを変更することができるからです。 db.auth("newuser", "password") -としてログインしているユーザーを変更することができるからです。簡単に見失う可能性があります。

更新

受理された回答をベースとして、プロンプトにユーザー、接続、および 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

[email protected]:test> use admin
switched to db admin

[email protected]:admin> db.auth("a_user", "a_password")
1

[email protected]:admin>

どのように解決するのですか?

この connectionStatus コマンドは認証されたユーザーを表示します(もしあれば、他のデータも含めて)。

db.runCommand({connectionStatus : 1})

とすると、以下のような結果になります。

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

つまり、シェルから接続する場合、これは基本的に現在のユーザーである

をオーバーライドすることで、プロンプトにユーザ名を追加することもできます。 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>