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

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

最終更新日:Nov 09, 2025

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

前提条件

  1. ApsaraDB for MongoDB インスタンスを作成済みであること。さまざまな種類のインスタンスを作成する方法の詳細については、次のトピックをご参照ください。

  2. mongo シェルを使用して ApsaraDB for MongoDB インスタンスに接続済みであること。さまざまな種類のインスタンスに接続する方法の詳細については、次のトピックをご参照ください。

注意事項

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

データベースアカウントを作成する

説明
  • mongo シェルを使用して作成されたデータベースアカウントは、ApsaraDB for MongoDB コンソールの [アカウント管理] ページではクエリできません。

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

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

    use admin
    説明

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

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

    構文:

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

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

    例:

    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

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

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

    test

    password

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

    123456Aa

    role_name

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

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

    readAnyDatabase

    role_database_name

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

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

    admin

    例:

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

    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

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

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

    test

    password

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

    123456Aa

    role_name

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

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

    readAnyDatabase

    role_database_name

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

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

    admin

    例:

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

    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

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

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

    test

    password

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

    123456Aa

    role_name

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

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

    readAnyDatabase

    role_database_name

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

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

    admin

    例:

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

    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

readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase など、admin データベースのすべての権限が含まれます。

説明

ロールの詳細については、「組み込みロール」をご参照ください。

関連情報