AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

db.updateUser()(mongoshメソッド)

db.updateUser( username, update, writeConcern )

メソッドを実行するデータベース上のユーザーのプロファイルを更新します。フィールドを更新すると、前のフィールドの値が完全に置き換えられます。これには、ユーザーの roles 配列の更新が含まれます。

警告

roles 配列を更新すると、前の配列の値が完全に置き換えられます。ユーザーの既存のロールすべてを置き換えずにロールを追加または排除するには、db.grantRolesToUser() メソッドまたは db.revokeRolesFromUser() メソッドを使用します。

The db.updateUser() method uses the following syntax:

Tip

passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。

db.updateUser(
"<username>",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: passwordPrompt(), // Or "<cleartext password>"
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],
passwordDigestor: "<server|client>"
},
writeConcern: { <write concern> }
)

The db.updateUser() method has the following arguments.

Parameter
タイプ
説明

username

string

更新するユーザーの名前。

update

ドキュメント

ユーザーの置換データを含むドキュメント。このデータは、ユーザーに対応するデータを完全に置き換えます。

writeConcern

ドキュメント

任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。

update ドキュメントでは、更新するフィールドとその新しい値を指定します。update ドキュメントのすべてのフィールドは任意ですが、少なくとも 1 つのフィールドを含める必要があります。

updateドキュメントには、以下のフィールドがあります。

フィールド
タイプ
説明

customData

ドキュメント

任意。任意の情報が含まれます。

roles

配列

任意。ユーザーに付与されたロール。roles 配列を更新すると、前の配列の値は上書きされます。

pwd

string

任意。ユーザーのパスワード。値は以下のいずれかになります。

  • クリアテキスト文字列のユーザーのパスワード

  • passwordPrompt() で、ユーザーのパスワードの入力を求める

passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。

authenticationRestrictions

配列

任意。サーバーがユーザーに強制する認証制限。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレス リストと CIDR 範囲を指定します。

mechanisms

配列

任意。特定の SCRAM メカニズムまたはユーザー認証情報のメカニズムです。authenticationMechanisms が指定されている場合は、authenticationMechanisms のサブセットのみを指定できます。

パスワードなしで mechanisms フィールドを更新する場合、ユーザーの現在のメカニズムのサブセットのみを指定でき、指定されたメカニズムの既存のユーザー認証情報のみが保持されます。

メカニズムに併せてパスワードを更新すると、ユーザーの新しい認証情報セットが保存されます。

有効な値は次のとおりです。

  • "SCRAM-SHA-1"

    • SHA-1ハッシュ関数を使用します。
  • "SCRAM-SHA-256"

    • SHA-256ハッシュ関数を使用します。

    • featureCompatibilityVersion を 4.0 に設定する必要があります。

    • passwordDigestor は必ずserver にします。

passwordDigestor

string

任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。

使用可能な値は次のとおりです。

  • "server" (デフォルト)
    サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。
  • "client"SCRAM-SHA-256 とは互換性がありません)
    クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。

rolesフィールドでは、組み込みロールユーザー定義ロールの両方を指定できます。

To specify a role that exists in the same database where db.updateUser() runs, you can either specify the role with the name of the role:

"readWrite"

または、次のように、ドキュメントを使用してロールを指定することもできます。

{ role: "<role>", db: "<database>" }

別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。

authenticationRestrictionsドキュメントには、次のフィールドのみを含めることができます。 authenticationRestrictionsドキュメントに認識されないフィールドが含まれている場合、サーバーはエラーをスローします。

フィールド名
説明

clientSource

IP アドレスおよび/またはCIDR範囲の配列

存在する場合、サーバーはユーザーを認証する際に、クライアントの IP アドレスが指定されたリストに含まれているか、リスト内の CIDR 範囲に属していることを確認します。 クライアントの IP アドレスが存在しない場合、サーバーはユーザーを認証しません。

serverAddress

IP アドレスおよび/またはCIDR範囲の配列

クライアントが接続できる IP アドレスまたは CIDR 範囲のリスト。 存在する場合、サーバーはクライアントの接続が指定されたリスト内の IP アドレス経由で受け入れられたことを確認します。 認識されない IP アドレス経由で接続が受け入れられた場合、サーバーはユーザーを認証しません。

重要

ユーザーが互換性のない認証制限を持つ複数のロールを継承した場合、そのユーザーは使用できなくなります。

たとえば、ユーザーが、 clientSourceフィールドが["198.51.100.0"]であるロールと、 clientSourceフィールドが["203.0.113.0"]である別のロールを継承した場合、サーバーはユーザーを認証できません。

MongoDB での認証の詳細については、「自己管理型配置での認証 」を参照してください。

The db.updateUser() method wraps the updateUser command.

このメソッドは、次の環境でホストされている配置で使用できます。

重要

このコマンドは、MongoDB Atlas クラスターではサポートされていません。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

If run on a replica set, db.updateUser() is executed using "majority" write concern by default.

警告

By default, db.updateUser() sends all specified data to the MongoDB instance in cleartext, even if using passwordPrompt(). Use TLS transport encryption to protect communications between clients and the server, including the password sent by db.updateUser(). For instructions on enabling TLS transport encryption, see Configure MongoDB Instances for TLS/SSL Encryption.

MongoDB では、クリアテキストのパスワードはストアされません。パスワードが脆弱になるのは、クライアントとサーバー間の転送時と、TLS 転送暗号化が有効になっていない場合のみです。

ユーザーの roles 配列を更新するには、すべてのデータベースに対する revokeRole アクションを含むアクセス権が必要です。

ユーザーにロールを追加するには、ロールのデータベースに対して grantRole アクションが必要です。

別のユーザーの pwd フィールドまたは customData フィールドを変更するには、そのユーザーのデータベースに対してそれぞれ changePassword アクションと changeCustomData アクションが必要です。

自分のパスワードとカスタム データを変更するには、ユーザーのデータベースに対してそれぞれ changeOwnPassword および changeOwnCustomData アクションを付与する特権が必要です。

products データベースに次のユーザー情報を持つユーザー appClient01 がある場合:

{
_id : "products.appClient01",
userId : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
user : "appClient01",
db : "products",
customData : { empID : "12345", badge : "9156" },
roles : [
{
role : "readWrite",
db : "products"
},
{
role : "read",
db : "inventory"
}
],
mechanisms : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
],
authenticationRestrictions : [ {
clientSource: ["69.89.31.226"],
serverAddress: ["172.16.254.1"]
} ]
}

The following db.updateUser() method completely replaces the user's customData and roles data:

use products
db.updateUser( "appClient01",
{
customData : { employeeId : "0x3039" },
roles : [
{ role : "read", db : "assets" }
]
} )

products データベース内のユーザー appClient01 には現在、次のユーザー情報があります。

{
_id : "products.appClient01",
userId : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
user : "appClient01",
db : "products",
customData : { employeeId : "0x3039" },
roles : [
{
role : "read",
db : "assets"
}
],
mechanisms : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
],
authenticationRestrictions : [ {
clientSource: ["69.89.31.226"],
serverAddress: ["172.16.254.1"]
} ]
}

注意

SCRAM-SHA-256を使用するには、 featureCompatibilityVersion4.0 に設定する必要があります。featureCompatibilityVersion の詳細については、 Get FeatureCompatibilityVersion および setFeatureCompatibilityVersionを参照してください。

次の操作では、現在 SCRAM-SHA-256SCRAM-SHA-1 の両方の認証情報を持っているユーザーを、SCRAM-SHA-256 認証情報のみを持つように更新します。

注意

  • パスワードが mechanisms と共に指定されていない場合は、ユーザーの現行の SCRAM メカニズムのサブセットに mechanisms をアップデートできるのみです。

  • パスワードを mechanisms と共に指定する場合は、サポートされている任意の SCRAM メカニズムを指定できます。

  • SCRAM-SHA-256 の場合、passwordDigestor はデフォルト値 "server" である必要があります。

use reporting
db.updateUser(
"reportUser256",
{
mechanisms: [ "SCRAM-SHA-256" ]
}
)