すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:mongo シェルを使用したデータベースアカウントの管理

最終更新日:Jul 18, 2026

mongo シェルは MongoDB に含まれるデータベース管理ツールです。mongo シェルを使用して、ApsaraDB for MongoDB のデータベースアカウントを作成およびクエリできます。

前提条件

  1. ApsaraDB for MongoDB インスタンスが作成されています。さまざまなタイプのインスタンスの作成方法の詳細については、以下のトピックをご参照ください。

  2. mongo シェルを使用して ApsaraDB for MongoDB インスタンスに接続済みである必要があります。各種インスタンスへの接続方法については、以下のトピックをご参照ください。

注意事項

データベースアカウントは、同一データベース内で一意である必要があります。

データベースアカウントの作成

説明
  • mongo シェルを使用して作成されたデータベースアカウントは、ApsaraDB for MongoDB コンソールの アカウント ページには表示されません。

  • mongo シェルを使用して初めてデータベースアカウントを作成する場合は、admin データベース内の組み込みルートアカウントで認証を行う必要があります。

  1. admin データベースに切り替えます。

    use admin
    説明

    このコマンドは変更せずに実行できます。

  2. ルートアカウントを認証します。

    構文:

    db.auth("root","password")

    パラメーターの説明:password は、ルートアカウントのパスワードを指定します。

    例:

    db.auth("root","123456Aa")
  3. (任意)カスタムデータベースロールを作成します。

    特定のコレクションへのアクセスを制限するには、きめ細かなアクセス制御のためにカスタムデータベースロールを作成します。

    • データベースの切り替え:対象のデータベースに切り替えるには、use database_name コマンドを実行します。database_name は、対象のデータベース名です。

    • ロールのスコープ:ロールは、作成されたデータベース内でのみ使用できます。複数のデータベースに適用されるロールを作成する場合は、admin データベース内にロールを作成する必要があります。

    構文:

    db.createRole({role: "role_name", privileges: [{resource: {db: "role_database_name", collection: "collection_name" }, actions: [ "actions" ] }],roles: []})

    パラメーターの説明:

    パラメーター

    説明

    role_name

    新規ロールの名前。

    readRole

    role_database_name

    ロールが操作権限を持つデータベース。

    testDB

    collection_name

    コレクションの名前。

    testCollection

    actions

    許可される操作タイプ(例:findinsertupdateremove)。

    find

    roles

    このロールが継承する他のロール。空の配列は継承なしを示しますが、roles フィールドは必須です。

    []

    説明

    詳細については、「createRole」をご参照ください。

    例:

    testDB データベース内に readRole という名前のロールを作成し、testCollection コレクションに対する find 権限を付与します。

    db.createRole({role: "readRole",privileges: [{resource: {db: "testDB", collection: "testCollection" }, actions: [ "find" ]}],roles: []})

    成功時の応答は次のようになります。

    {
      ok: 1,
      '$clusterTime': {
        clusterTime: Timestamp({ t: 1747119397, i: 1 }),
        signature: {
          hash: Binary(Buffer.from("fde8****", "hex"), 0),
          keyId: Long("7503****")
        }
      },
      operationTime: Timestamp({ t: 1747119397, i: 1 })
    }
  4. データベースアカウントを作成します。

    方法 1:対象のデータベースに切り替えてアカウントを作成

    データベースアカウントは、作成されたデータベースに所属します。

    use database_name コマンドを実行してデータベースに切り替えます。database_name は、対象のデータベース名です。

    構文:

    db.createUser({user: "user_name", pwd: "password", roles:[{role: "role_name", db: "role_database_name"}]})

    パラメーターの説明:

    パラメーター

    説明

    user_name

    データベースアカウントの名前。

    アカウント名に:/?#[]@などの特殊文字が含まれる場合は、パーセントエンコーディングを実行する必要があります。パーセントエンコーディングの方法については、Percent-Encoding をご参照ください。

    test

    password

    データベースアカウントのパスワード。

    123456Aa

    role_name

    データベースアカウントに付与するロール。

    有効な値の詳細については、「データベースアカウントのロール」をご参照ください。

    readAnyDatabase

    role_database_name

    ロールが所属するデータベースの名前。

    たとえば、{role: "readAnyDatabase", db: "admin"} は、admin データベースの readAnyDatabase ロールをアカウントに付与し、すべてのデータベースに対する読み取り専用権限を提供します。

    admin

    例:

    admin データベース内に test という名前のデータベースアカウントを作成し、パスワードを 123456Aa に設定して、test アカウントに readAnyDatabase ロールを付与します。

    db.createUser({user: "test", pwd: "123456Aa", roles:[{role: "readAnyDatabase", db: "admin"}]})

    成功時の応答は次のようになります。

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

    方法 2:データベースを切り替えずにアカウントを作成

    データベースを切り替えずにデータベースアカウントを作成するには、以下のいずれかの方法を使用できます。

    db.getMongo()

    構文:

    db.getMongo().getDB("database_name").createUser({user: "user_name", pwd: "password", roles: [{role: "role_name", db: "role_database_name"}]})

    パラメーターの説明:

    パラメーター

    説明

    database_name

    アカウントが所属するデータベースの名前。

    admin

    user_name

    データベースアカウントの名前。

    アカウント名に:/?#[]@などの特殊文字が含まれる場合は、パーセントエンコーディングを実行する必要があります。パーセントエンコーディングの方法については、Percent-Encoding をご参照ください。

    test

    password

    データベースアカウントのパスワード。

    123456Aa

    role_name

    データベースアカウントに付与するロール。

    有効な値の詳細については、「データベースアカウントのロール」をご参照ください。

    readAnyDatabase

    role_database_name

    ロールが所属するデータベースの名前。

    たとえば、{role: "readAnyDatabase", db: "admin"} は、admin データベースの readAnyDatabase ロールをアカウントに付与し、すべてのデータベースに対する読み取り専用権限を提供します。

    admin

    例:

    admin データベースに所属する test という名前のデータベースアカウントを作成し、パスワードを 123456Aa に設定して、test アカウントに readAnyDatabase ロールを付与します。

    db.getMongo().getDB("admin").createUser({user: "test", pwd: "123456Aa", roles: [{role: "readAnyDatabase", db: "admin"}]})

    成功時の応答は次のようになります。

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

    db.getSiblingDB()

    構文:

    db.getSiblingDB("database_name").createUser({user: "user_name", pwd: "password", roles: [{role: "role_name", db: "role_database_name"}]})

    パラメーターの説明:

    パラメーター

    説明

    database_name

    アカウントが所属するデータベースの名前。

    admin

    user_name

    データベースアカウントの名前。

    アカウント名に:/?#[]@などの特殊文字が含まれる場合は、パーセントエンコーディングを実行する必要があります。パーセントエンコーディングの方法については、Percent-Encoding をご参照ください。

    test

    password

    データベースアカウントのパスワード。

    123456Aa

    role_name

    データベースアカウントに付与するロール。

    有効な値の詳細については、「データベースアカウントのロール」をご参照ください。

    readAnyDatabase

    role_database_name

    ロールが所属するデータベースの名前。

    たとえば、{role: "readAnyDatabase", db: "admin"} は、admin データベースの readAnyDatabase ロールをアカウントに付与し、すべてのデータベースに対する読み取り専用権限を提供します。

    admin

    例:

    admin データベースに所属する test という名前のデータベースアカウントを作成し、パスワードを 123456Aa に設定して、test アカウントに readAnyDatabase ロールを付与します。

    db.getSiblingDB("admin").createUser({user: "test", pwd: "123456Aa", roles: [{role: "readAnyDatabase", db: "admin"}]})

    成功時の応答は次のようになります。

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

データベースアカウントのクエリ

ApsaraDB for MongoDB インスタンスのすべてのデータベースアカウントのクエリ

admin データベースで以下のコマンドを実行します。

db.getCollection("system.users").find()
説明

このコマンドは変更せずに実行できます。

応答は次のようになります。

{ "_id" : "admin.root", "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"), "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "WeN7mJumlZKG2dvzLRDL*****", "storedKey" : "wfRUnCq55ajFwnYxf9MQJ0k****", "serverKey" : "tP70xGJ9PRZs01VSJF1YDrHg****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "5aIQ734c2Whg2pPwfg****/mpJulsd+33rE****", "storedKey" : "otMBwA2TTwoU****+dfwccnfPN14Dy5Oq6keYOl****", "serverKey" : "VCE****+aLkXGzCqRiaPfjnFG4WFiAOq0BKXxTo0****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7ll****/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }

対象のデータベース内のすべてのデータベースアカウントのクエリ

説明

use database_name コマンドを実行してデータベースを切り替えることができます。database_name は、対象のデータベース名です。

  • 方法 1:対象のデータベースでクエリコマンドを実行します。

    show users
    説明

    このコマンドは変更せずに実行できます。

    応答は次のようになります。

    {
            "_id" : "admin.root",
            "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"),
            "user" : "root",
            "db" : "admin",
            "roles" : [
                    {
                            "role" : "root",
                            "db" : "admin"
                    }
            ],
            "mechanisms" : [
                    "SCRAM-SHA-1",
                    "SCRAM-SHA-256"
            ]
    }
    {
            "_id" : "admin.test",
            "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"),
            "user" : "test",
            "db" : "admin",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ],
            "mechanisms" : [
                    "SCRAM-SHA-1",
                    "SCRAM-SHA-256"
            ]
    }
  • 方法 2:admin データベースでクエリコマンドを実行します。

    構文:

    db.getCollection("system.users").find({db: "database_name"})

    パラメーターの説明:database_name は、対象のデータベース名を指定します。

    例:

    db.getCollection("system.users").find({db: "admin"})

    応答は次のようになります。

    { "_id" : "admin.root", "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"), "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "WeN7mJumlZKG2dvzLRDL*****", "storedKey" : "wfRUnCq55ajFwnYxf9MQJ0k****", "serverKey" : "tP70xGJ9PRZs01VSJF1YDrHg****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "5aIQ734c2Whg2pPwfg****/mpJulsd+33rE****", "storedKey" : "otMBwA2TTwoU****+dfwccnfPN14Dy5Oq6keYOl****", "serverKey" : "VCE****+aLkXGzCqRiaPfjnFG4WFiAOq0BKXxTo0****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
    { "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7ll****/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }

対象のデータベース内の単一のデータベースアカウントのクエリ

説明

単一のデータベースアカウントをクエリするコマンドは、admin データベースで実行する必要があります。

構文:

db.getCollection("system.users").find({user: "user_name", db: "database_name"})

パラメーターの説明:

  • user_name:データベースアカウントの名前を指定します。

  • database_name:アカウントが所属するデータベースの名前を指定します。

例:

db.getCollection("system.users").find({user: "test", db: "admin"})

応答は次のようになります。

{ "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7llXdiU/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }

データベースアカウントのロール

データベース

ロール

説明

すべてのデータベース

readOnly

データベースに対する読み取り専用権限を付与します。

readWrite

データベースに対する読み取りおよび書き込み権限を付与します。

userAdmin

データベース内でアカウントおよびロールを作成する権限を付与します。

dbAdmin

データベース内のコレクションを管理する権限を付与します。

dbOwner

readWrite、userAdmin、および dbAdmin のすべての権限を含みます。

enableSharding

シャードクラスターインスタンス内のデータベースを複数のシャードにわたってシャーディングできるようにします。

admin データベース

readAnyDatabase

すべてのデータベースに対する読み取り専用権限を付与します。

readWriteAnyDatabase

すべてのデータベースに対する読み取りおよび書き込み権限を付与します。

userAdminAnyDatabase

すべてのデータベース内でアカウントおよびロールを作成する権限を付与します。

dbAdminAnyDatabase

すべてのデータベース内のコレクションを管理する権限を付与します。

clusterMonitor

情報収集コマンドを実行する権限を付与します。

hostManager

setParameter、killop、resync、killCursors などのコマンドを実行する権限を付与します。

clusterManager

ノード管理コマンドを実行する権限を付与します。

clusterAdmin

clusterMonitor、hostManager、および clusterManager のすべての権限を含みます。

root

admin データベース内のすべての権限(readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase など)を含みます。

説明

ロールの詳細については、Built-In Roles をご参照ください。

参照情報