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

db.createUser()

項目一覧

  • 定義
  • 互換性
  • 動作
  • 必要なアクセス権
db.createUser(user, writeConcern)

メソッドが実行されるデータベースに新しいユーザーを作成します。db.createUser()は、ユーザーがデータベースに既に存在する場合、重複ユーザーエラーを返します。

db.createUser()メソッドの構文は次のとおりです。

フィールド
タイプ
説明

user

ドキュメント

作成するユーザーに関する認証およびアクセス情報を含むドキュメントを参照してください。

writeConcern

ドキュメント

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

user ドキュメントはユーザーを定義し、形式は以下のとおりです。

Tip

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

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

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

フィールド
タイプ
説明

user

string

新しいユーザーの名前。

pwd

string

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

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

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

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

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

customData

ドキュメント

任意。任意の情報が含まれます。このフィールドは、データ管理者がこの特定のユーザーに関連付けたいデータを保存するために使用できます。たとえば、ユーザーの氏名や従業員 ID などがあります。

roles

配列

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

配列

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

バージョン 3.6 の新機能

mechanisms

配列

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

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

  • "SCRAM-SHA-1"

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

  • "SCRAM-SHA-256"

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

    • passwordDigestor は必ずserver にします。

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

passwordDigestor

string

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

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

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

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

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

"readWrite"

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

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

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

バージョン 3.6 の新機能

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 での認証の詳細については、「認証 」を参照してください。

db.createUser() メソッドは、createUser コマンドをラップします。

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

重要

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

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

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

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

レプリカセットで実行する場合、 db.createUser()はデフォルトで"majority"書込み保証を使用して実行されます。

警告

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

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

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

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

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

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

以下の db.createUser() 操作により、products データベースに accountAdmin01 ユーザーが作成されます。

Tip

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

use products
db.createUser( { user: "accountAdmin01",
pwd: passwordPrompt(), // Or "<cleartext password>"
customData: { employeeId: 12345 },
roles: [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"] },
{ w: "majority" , wtimeout: 5000 } )

この操作により、accountAdmin01 に次のロールが付与されます。

  • admin データベース上の clusterAdmin ロールと readAnyDatabase ロール

  • products データベースのreadWrite ロール

次の操作では、products データベース内に accountUser を作成し、このユーザーに readWrite ロールと dbAdmin ロールを付与します。

Tip

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

use products
db.createUser(
{
user: "accountUser",
pwd: passwordPrompt(), // Or "<cleartext password>"
roles: [ "readWrite", "dbAdmin" ]
}
)

次の操作では、 admin データベースに reportsUser という名前のユーザーが作成されますが、ロールはまだ割り当てられません。

Tip

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

use admin
db.createUser(
{
user: "reportsUser",
pwd: passwordPrompt(), // Or "<cleartext password>"
roles: [ ]
}
)

次の操作では、admin データベースに appAdmin という名前のユーザーが作成され、このユーザーに config データベースへの readWrite アクセス権が付与されます。これにより、このユーザーはバランサー設定など、シャーディングされたクラスターの一部の設定を変更することが出来ます。

Tip

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

use admin
db.createUser(
{
user: "appAdmin",
pwd: passwordPrompt(), // Or "<cleartext password>"
roles:
[
{ role: "readWrite", db: "config" },
"clusterAdmin"
]
}
)

次の操作により、 admin データベースに restricted という名前のユーザーが作成されます。このユーザーは、IP アドレス192.0.2.0 から IP アドレス198.51.100.0 に接続する場合にのみ認証が可能となります。

Tip

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

use admin
db.createUser(
{
user: "restricted",
pwd: passwordPrompt(), // Or "<cleartext password>"
roles: [ { role: "readWrite", db: "reporting" } ],
authenticationRestrictions: [ {
clientSource: ["192.0.2.0"],
serverAddress: ["198.51.100.0"]
} ]
}
)

注意

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

次の操作では、 SCRAM-SHA-256 資格情報のみを持つユーザーが作成されます。

Tip

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

use reporting
db.createUser(
{
user: "reportUser256",
pwd: passwordPrompt(), // Or "<cleartext password>"
roles: [ { role: "readWrite", db: "reporting" } ],
mechanisms: [ "SCRAM-SHA-256" ]
}
)

authenticationMechanisms パラメーターが設定されている場合は、 mechanisms フィールドにはauthenticationMechanismsパラメーターで指定された値のみを含めることができます。

戻る

db.changeUserPassword