Mongo シェルですべてのユーザーを一覧表示する
この MongoDB 記事では、ユーザーを認証する方法、Mongo シェルですべてのユーザーを一覧表示する方法、および db.getUser()
および db getUsers()
メソッドを使用する方法を学習します。
ユーザーを認証する
ユーザーとして認証するには、ユーザーはユーザー名、パスワード、およびそのユーザーに関連付けられた認証データベースを提供する必要があります。 したがって、同じ mongosh
セッションでユーザーを切り替えることはできません。
別のユーザーとして認証するということは、セッションが認証された両方のユーザーの権限を持つことを意味します。 mongosh
を終了して再起動すると、ユーザーを切り替えることができます。
mongosh
を使用すると、接続中に認証するか、接続後に認証することができます。
接続時に認証する
-u
、-p
、および --authenticationDatabase
コマンドライン オプションを指定して mongosh
を起動します。
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myUserAdmin" -p
プロンプトが表示されたら、パスワードを入力します。
接続後の認証
mongosh
を使用すると、mongod
または mongos
インスタンスに接続されます。
mongosh --port 27017
mongosh
で、認証データベース (この場合は admin
) に切り替え、db.auth(,)
メソッドまたは authenticate
コマンドを使用して、認証データベースに対して認証します。
use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
passwordPrompt()
メソッドは、ユーザーにパスワードの入力を求めます。 ユーザーは、パスワードを文字列として直接指定することもできます。
passwordPrompt()
メソッドを使用して、パスワードが画面に表示されないようにし、パスワードがシェル履歴に漏洩する可能性を回避することをお勧めします。 代わりに、プロンプトが表示されたらパスワードを入力します。
Mongo シェルですべてのユーザーを一覧表示する
すべてのユーザーを一覧表示するには、mongosh
を使用して system.users
コレクションをクエリできます。
use admin
db.system.users.find()
system.users
コレクションを直接変更しないでください。 ユーザーを管理するには、指定されたユーザー管理コマンドを使用できます。
たとえば、mongos
を介して作成されたシャード クラスターのすべてのユーザーを一覧表示するには、mongos
に接続し、次のコマンドを実行します。 MongoDB は、mongos
によって作成されたユーザーを構成サーバーの admin
データベースに保存します。
すべてのシャードを一覧表示するには、ローカル ユーザーがそれぞれのシャードに直接接続し、次のコマンドを実行します。 MongoDB は、シャード自体の admin
データベースに shard local
ユーザーを格納するために使用されます。
これらのシャード ローカル
ユーザーは、mongos
を介してシャード クラスターに追加されたユーザーとは無関係です。 Shard local
ユーザーはシャードに制限され、mongos
は利用できません。
MongoDB の db.getUser()
メソッド
このメソッドの構文は次のとおりです。
db.getUser(username, args)
このメソッドは、指定されたユーザーのユーザー情報を返します。 ユーザーは、ユーザーのデータベースでこのメソッドを実行できます。
メソッドが実行されているデータベースに存在する必要があります。 db.getUser()
メソッドは、次のパラメーターで構成されます。
db.getUser( "<username>", {
showCredentials: <Boolean>,
showPrivileges: <Boolean>,
showAuthenticationRestrictions: <Boolean>,
filter: <document>
} )
パラメータ | タイプ | 説明 |
---|---|---|
username |
弦 | 情報を取得するユーザーの名前。 |
args |
書類 | Optional. A 書類specifying additional arguments. |
args
ドキュメントは次のフィールドをサポートしています。
分野 | タイプ | 説明 |
---|---|---|
showCredentials |
ブール値 | これはオプションのフィールドです。 このフィールドを true に設定すると、ユーザーのパスワード ハッシュが表示されます。 デフォルトでは、このフィールドは false です。 |
showPrivileges |
ブール値 | これはオプションのフィールドです。 このフィールドを true に設定すると、拡張情報を含むユーザーの完全な権限が表示されます。 デフォルトでは、このフィールドは false です。 すべてのユーザーを表示する場合、このフィールドは指定できません。 |
showAuthenticationRestrictions |
ブール値 | これはオプションのフィールドです。 ユーザーの認証制限を表示するには、このフィールドを true に設定します。 デフォルトでは、このフィールドは false です。 すべてのユーザーを表示する場合、このフィールドは指定できません。 |
filter |
書類 | This is an optional field. This 書類specifies $match stage conditions to return information for users that matches the filter conditions. |
db.getUser()
メソッドは usersInfo
コマンドにラップされています。
ユーザーは、別のユーザーの情報を表示するために、別のユーザーのデータベースで viewUser
アクションを持っている必要があります。 ユーザーは自分のデータにアクセスできます。
例:
次の操作は、accounts
データベース内のサンプル appClient
ユーザーに関する情報を返します。
use accounts
db.getUser("appClient")
上記の例の出力を以下に示します。
{
_id: 'accounts.appClient',
userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
user: 'appClient',
db: 'accounts',
roles: [],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
MongoDB の db.getUsers()
メソッド
このメソッドの構文は次のとおりです。
db.getUsers(<options>)
このメソッドは、データベース内のすべてのユーザーの情報を返します。 db.getUsers()
メソッドは usersInfo: 1
コマンドにラップされています。
db.getUsers()
メソッドは次のオプションを取ります。
db.getUsers( {
showCredentials: <Boolean>,
filter: <document>
} )
分野 | タイプ | 説明 |
---|---|---|
showCredentials |
ブール値 | これはオプションのフィールドです。 フィールドを true に設定して、ユーザーのパスワード ハッシュを表示できます。 デフォルトでは、このフィールドは false. です。 |
filter |
書類 | This is an optional field. This 書類specifies $match stage conditions to return information for users that matches the filter conditions. |
ユーザーが別のユーザーの情報を表示するには、そのユーザーのデータベースで viewUser
アクションが必要です。 ユーザーは自分の情報を表示できます。
例:
指定したフィルターに一致する特定のデータベースのすべてのユーザーを表示します。
db.getUsers()
メソッドは filter
ドキュメントを受け入れて、フィルター条件に一致するユーザーの情報を返すことができます。 SCRAM-SHA-256
資格情報を持つ現在のデータベースのすべてのユーザーを表示するには。
db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })
すべてのユーザーを表示している間は、showCredentials
オプションを指定できますが、showPrivileges
または showAuthenticationRestrictions
オプションは指定できません。
したがって、この MongoDB 記事の助けを借りて、ユーザーを認証し、Mongo シェルですべてのユーザーを一覧表示し、db.getUser()
および db.getUsers()
メソッドを使用する方法を学習しました。