Overview
適切な特権を持つユーザーは、自分のパスワードやカスタム データを変更できます。Custom data によって任意のユーザー情報が保存されます。
Considerations
この手順で使用する強力なパスワードを生成するには、openssl ユーティリティの rand コマンドを使用できます。例えば、次のオプションを指定して openssl
rand を発行すると、48の 疑似ランダム バイトの base64 エンコードされた文字列が作成されます。
openssl rand -base64 48
前提条件
自分のパスワードとカスタム データを変更するには、ユーザーのデータベースに対してそれぞれ changeOwnPassword および changeOwnCustomData アクションを付与する特権が必要です。
ユーザーとロールを管理する特権を持つユーザーとして接続します。
mongodロールを持つユーザーなど、ユーザーとロールを管理する特権を持つユーザーで、mongosuserAdminAnyDatabase または に接続します。次の手順では、 「 自己管理型配置でアクセス制御を有効にする 」で作成されたmyUserAdminを使用します。
mongosh --port 27017 -u myUserAdmin -p --authenticationDatabase 'admin'
適切な特権を持つロールを作成します。
admin データベースで、changeOwnPassword と changeOwnCustomData を持つ新しいロールを create します。
use admin db.createRole( { role: "changeOwnPasswordCustomDataRole", privileges: [ { resource: { db: "", collection: ""}, actions: [ "changeOwnPassword", "changeOwnCustomData" ] } ], roles: [] } )
このロールを持つユーザーを追加します。
test データベースで、作成した "changeOwnPasswordCustomDataRole" ロールを持つ新しいロールを create します。たとえば、次の操作では、組み込みロール readWrite とユーザーが作成した"changeOwnPasswordCustomDataRole" の両方を持つユーザーが作成されます。
Tip
メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo shell の以前のバージョンと同様にパスワードを直接指定することもできます。
use test db.createUser( { user:"user123", pwd: passwordPrompt(), // or cleartext password roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ] } )
既存のユーザーに新しいロールを付与するには、db.grantRolesToUser() を使用します。
手順
適切な特権で接続します。
適切な権限を持つユーザーとして mongod または mongos に接続します。
たとえば、次の操作では、前提条件セクションで作成された MongoDB をuser123として接続します。
mongosh --port 27017 -u user123 --authenticationDatabase 'test' -p
-pコマンドライン オプションにパスワードを指定しない場合、 mongoshはパスワードの入力を要求します。
前提条件セクションで指定された権限があることを確認して、自身のユーザー情報を表示するには、showPrivileges オプションを指定した usersInfo コマンドを使用します。
パスワードとカスタム データを変更します。
db.updateUser() メソッドを使用して、パスワードとカスタム データをアップデートします。
たとえば、次の操作では、ユーザーのパスワードが KNlZmiaNUp0B に変更され、カスタム データが { title: "Senior Manager" } に変更されます。
Tip
メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo shell の以前のバージョンと同様にパスワードを直接指定することもできます。
use test db.updateUser( "user123", { pwd: passwordPrompt(), // or cleartext password customData: { title: "Senior Manager" } } )
パスワードの入力を求められたら、入力します。