定義
createUserCreates a new user on the database where you run the command. The
createUsercommand returns a duplicate user error if the user exists.Tip
In
mongosh, this command can also be run through thedb.createUser()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
重要
このコマンドは、MongoDB Atlas クラスターではサポートされていません。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
構文
このコマンドの構文は、次のとおりです。
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 には、次のフィールドがあります。
フィールド | タイプ | 説明 |
|---|---|---|
| string | 新しいユーザーの名前。 |
| string | The user's password. The 値は以下のいずれかになります。
|
| ドキュメント | 任意。任意の情報が含まれます。このフィールドは、データ管理者がこの特定のユーザーに関連付けたいデータを保存するために使用できます。たとえば、ユーザーの氏名や従業員 ID などがあります。 |
| 配列 | ユーザーに付与されたロールです。空の配列 |
| ブール値 | 任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。 true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。 false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません デフォルト値は |
| ドキュメント | 任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。 |
| 配列 | 任意。作成されたユーザーにサーバーが強制する認証制限です。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレス リストと CIDR 範囲を指定します。 |
| 配列 | 任意。SCRAM ユーザー資格情報を作成するための、特定の SCRAM メカニズムを指定します。 有効な値は次のとおりです。
featureCompatibilityVersion のデフォルトは featureCompatibilityVersion のデフォルトは |
| ブール値 | 任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。 true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。 false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません デフォルト値は |
| any | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
ロール
rolesフィールドでは、組み込みロールとユーザー定義ロールの両方を指定できます。
To specify a role that exists in the same database where createUser runs, you can either specify the role with the name of the role:
"readWrite"
または、次のように、ドキュメントを使用してロールを指定することもできます。
{ role: "<role>", db: "<database>" }
別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。
認証の制限
authenticationRestrictionsドキュメントには、次のフィールドのみを含めることができます。 authenticationRestrictionsドキュメントに認識されないフィールドが含まれている場合、サーバーはエラーをスローします。
フィールド名 | 値 | 説明 |
|---|---|---|
| IP アドレスおよび/またはCIDR範囲の配列 | 存在する場合、サーバーはユーザーを認証する際に、クライアントの IP アドレスが指定されたリストに含まれているか、リスト内の CIDR 範囲に属していることを確認します。 クライアントの IP アドレスが存在しない場合、サーバーはユーザーを認証しません。 |
| IP アドレスおよび/またはCIDR範囲の配列 | クライアントが接続できる IP アドレスまたは CIDR 範囲のリスト。 存在する場合、サーバーはクライアントの接続が指定されたリスト内の IP アドレス経由で受け入れられたことを確認します。 認識されない IP アドレス経由で接続が受け入れられた場合、サーバーはユーザーを認証しません。 |
重要
ユーザーが互換性のない認証制限を持つ複数のロールを継承した場合、そのユーザーは使用できなくなります。
たとえば、ユーザーが、 clientSourceフィールドが["198.51.100.0"]であるロールと、 clientSourceフィールドが["203.0.113.0"]である別のロールを継承した場合、サーバーはユーザーを認証できません。
MongoDB での認証の詳細については、「自己管理型配置での認証 」を参照してください。
動作
ユーザー ID
MongoDB ではユーザーの作成時に自動的に一意のuserId が割り当てられます。
暗号化
警告
By default, createUser 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 createUser. For instructions on enabling TLS transport encryption, see Configure MongoDB Instances for TLS/SSL Encryption.
MongoDB では、クリアテキストのパスワードはストアされません。パスワードが脆弱になるのは、クライアントとサーバー間の転送時と、TLS 転送暗号化が有効になっていない場合のみです。
外部認証情報
たとえば Kerberos を使用する MongoDB Enterprise がインストールされている場合などは、$external データベースで作成されたユーザーの認証情報は、MongoDB の外部に保存される必要があります。
$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
local Database
ローカル データベース上でユーザーを作成することはできません。
ユーザー名の制限
ユーザー名は 1 文字以上で、7 MB より大きくすることはできません。
必要なアクセス権
データベースに新しいユーザーを作成するには、そのデータベース リソース上の
createUserアクション が必要です。
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 } } )