Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

createUser

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
  • 必要なアクセス権
createUser

コマンドを実行するデータベースに新しいユーザーを作成します。 ユーザーが存在する場合、 createUserコマンドは重複ユーザーエラーを返します。

Tip

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

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

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

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

重要

このコマンドは、M 0 、M 2 、M 5 、M 10 + クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • 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

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

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

  • クリアテキスト string のユーザーのパスワード

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

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

customData
ドキュメント
任意。任意の情報が含まれます。このフィールドは、データ管理者がこの特定のユーザーに関連付けたいデータを保存するために使用できます。たとえば、ユーザーの氏名や従業員 ID などがあります。
roles
配列
ユーザーに付与されたロールです。空の配列[]を指定すると、ロールのないユーザーも作成できます。
digestPassword
ブール値

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

true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。

false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません 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 に設定する必要があります。

  • DigestPassword はtrueである必要があります。

featureCompatibilityVersion のデフォルトは4.0で、 SCRAM-SHA-1SCRAM-SHA-256の両方です。

featureCompatibilityVersion のデフォルトは3.6であり、 SCRAM-SHA-1です。

digestPassword
ブール値

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

true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。

false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません 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 バイトより大きくすることはできません。

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

ユーザー名は 1 文字以上で、7 MB より大きくすることはできません。

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

次のcreateUserコマンドは、 productsデータベースにユーザーaccountAdmin01を作成します。 このコマンドは、accountAdmin01 clusterAdminreadAnyDatabaseadminに、 データベースで ロールと ロールを付与し、readWrite productsデータベースで ロールを付与します。

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 }
} )

戻る

ユーザー管理