Docs Menu

createUser

createUser

Creates a new user on the database where you run the command. The createUser command returns a duplicate user error if the user exists.

Tip

mongoshでは、このコマンドはdb.createUser()ヘルパー メソッドを通じて実行することもできます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M0、M2、M5、M10+、および Flex クラスターではサポートされていません。詳細については、「 サポートされていないコマンド 」を参照してください。

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

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

このコマンドの構文は、次のとおりです。

Tip

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

db.runCommand(
{
createUser: "<name>",
pwd: passwordPrompt(), // Or "<cleartext password>"
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
writeConcern: { <write concern> },
authenticationRestrictions: [
{ clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] },
...
],
mechanisms: [ "<scram-mechanism>", ... ],
digestPassword: <boolean>,
comment: <any>
}
)

createUserには次のフィールドがあります:

フィールド
タイプ
説明

createUser

string

新しいユーザーの名前。

pwd

string

ユーザーのパスワード。 データベースで を実行して、createUser MongoDBの外部に保存される認証情報を持つユーザーを作成する場合、pwd フィールドは必要ありません。$external

値は以下のいずれかになります。

  • The user's password in cleartext string

  • passwordPrompt(), to prompt for the user's password

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

customData

ドキュメント

Optional. Any arbitrary information. This field can be used to store any data an admin wishes to associate with this particular user. For example, this could be the user's full name or employee id.

roles

配列

ユーザーに付与されたロールです。空の配列[]を指定すると、ロールのないユーザーも作成できます。

digestPassword

ブール値

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

If true, the server receives undigested password from the client and digests the password.

If false, the client digests the password and passes the digested password to the server. Not compatible with SCRAM-SHA-256

デフォルト値は true です。

writeConcern

ドキュメント

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

authenticationRestrictions

配列

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

mechanisms

配列

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

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

  • "SCRAM-SHA-1"

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

  • "SCRAM-SHA-256"

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

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

  • Requires digestPassword to be true.

The default for featureCompatibilityVersion is 4.0 is both SCRAM-SHA-1 and SCRAM-SHA-256.

The default for featureCompatibilityVersion is 3.6 is SCRAM-SHA-1.

digestPassword

ブール値

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

If true, the server receives undigested password from the client and digests the password.

If false, the client digests the password and passes the digested password to the server. Not compatible with SCRAM-SHA-256

デフォルト値は true です。

comment

any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

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

createUserが実行されるのと同じデータベースに存在するロールを指定するには、ロールの名前を使用してロールを指定します。

"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 での認証の詳細については、「自己管理型配置での認証 」を参照してください。

MongoDB ではユーザーの作成時に自動的に一意のuserId が割り当てられます。

警告

デフォルトでは、 を使用している場合でも、createUser は指定されたすべてのデータを MongoDBpasswordPrompt() インスタンスにクリアテキストで送信します。TLS トランスポート暗号化を使用して、 createUserによって送信されたパスワードを含む、クライアントとサーバー間の通信を保護します。 TLS トランスポート暗号化を有効にする手順については、「 TLS/SSL 用にmongodmongosを構成する 」を参照してください。

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

たとえば Kerberos を使用する MongoDB Enterprise がインストールされている場合などは$external データベースで作成されたユーザーの認証情報は、MongoDB の外部に保存される必要があります。

$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。

ローカル データベース上でユーザーを作成することはできません。

Usernames must consist of at least one character and cannot be larger than 7MB.

userAdminおよび userAdminAnyDatabase の組み込みロールが、それぞれのリソースでのcreateUser アクションおよび grantRole アクションを提供します。

The following createUser command creates a user accountAdmin01 on the products database. The command gives accountAdmin01 the clusterAdmin and readAnyDatabase roles on the admin database and the readWrite role on the products database:

Tip

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

db.getSiblingDB("products").runCommand( {
createUser: "accountAdmin01",
pwd: passwordPrompt(),
customData: { employeeId: 12345 },
roles: [
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
],
writeConcern: { w: "majority" , wtimeout: 5000 }
} )