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

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

最終更新日:Jun 12, 2024

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

前提条件

  1. ApsaraDB for MongoDB インスタンスを作成済み。 インスタンスの作成に使用できる方法は、インスタンスのアーキテクチャによって異なります。 詳細については、以下のトピックをご参照ください。

  2. インスタンスはmongoシェルを使用して接続されています。 接続方法は、インスタンスアーキテクチャによって異なります。 詳細については、以下のトピックをご参照ください。

注意事項

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

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

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

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

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

    use admin
    説明

    このコマンドは変更なしで使用できます。

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

    構文:

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

    passwordは、rootアカウントのパスワードを示します。

    例:

    db.auth("root","123456Aa")
  3. データベースアカウントを作成します。

    • 方法1: 特定のデータベースに切り替えて、データベースにアカウントを作成します。

      データベースアカウントは、アカウントが作成されたデータベースに属します。 use database_nameコマンドを使用してデータベースを切り替えることができます。

      構文:

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

      構文で使用されるパラメーターを次の表に示します。

      パラメーター

      説明

      user_name

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

      名前に特定の特殊文字が含まれている場合は、パーセントエンコードする必要があります。 これらの特殊文字には、: / ? # [ ] @. 詳細については、「パーセント-エンコーディング」をご参照ください。

      test

      パスワード

      データベースアカウントのパスワードを設定します。

      123456Aa

      role_name

      データベースアカウントに割り当てられたロール。

      詳細については、このトピックの「データベースアカウントの役割」を参照してください。

      readAnyDatabase

      role_database_name

      ロールが作成されるデータベース。

      たとえば、{role: "readAnyDatabase", db: "admin"} では、adminデータベースのアカウントにreadAnyDatabaseロールを割り当てるように指定します。 この場合、アカウントはインスタンス内のすべてのデータベースに対して読み取り専用の権限を持ちます。

      admin

      例:

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

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

      アカウントの作成が成功すると、次の結果が返されます。

      正常に追加されたユーザー: {
              "user" : "test" 、
              "roles" : [
                      {
                              "role" : "readAnyDatabase" 、
                              "db" : "admin"
                      }
              ]
      }
    • 方法2: データベースを切り替えずにデータベースアカウントを作成します。

      次のいずれかのコマンドを実行して、データベースアカウントを作成できます。

      • コマンド 1

        構文:

        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

        パスワード

        データベースアカウントのパスワードを設定します。

        123456Aa

        role_name

        データベースアカウントに割り当てられたロール。

        詳細については、このトピックの「データベースアカウントの役割」を参照してください。

        readAnyDatabase

        role_database_name

        ロールが作成されるデータベース。

        たとえば、{role: "readAnyDatabase", db: "admin"} では、adminデータベースのアカウントにreadAnyDatabaseロールを割り当てるように指定します。 この場合、アカウントはインスタンス内のすべてのデータベースに対して読み取り専用の権限を持ちます。

        admin

        例:

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

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

        アカウントの作成が成功すると、次の結果が返されます。

        正常に追加されたユーザー: {
                "user" : "test" 、
                "roles" : [
                        {
                                "role" : "readAnyDatabase" 、
                                "db" : "admin"
                        }
                ]
        }
      • コマンド 2

        構文:

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

        構文で使用されるパラメーターを次の表に示します。

        パラメーター

        説明

        database_name

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

        admin

        user_name

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

        名前に特定の特殊文字が含まれている場合は、パーセントエンコードする必要があります。 これらの特殊文字には、: / ? # [ ] @. 詳細については、「パーセント-エンコーディング」をご参照ください。

        test

        パスワード

        データベースアカウントのパスワードを設定します。

        123456Aa

        role_name

        データベースアカウントに割り当てられたロール。

        詳細については、このトピックの「データベースアカウントの役割」を参照してください。

        readAnyDatabase

        role_database_name

        ロールが作成されるデータベース。

        たとえば、{role: "readAnyDatabase", db: "admin"} では、adminデータベースのアカウントにreadAnyDatabaseロールを割り当てるように指定します。 この場合、アカウントはインスタンス内のすべてのデータベースに対して読み取り専用の権限を持ちます。

        admin

        例:

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

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

        アカウントの作成が成功すると、次の結果が返されます。

        正常に追加されたユーザー: {
                "user" : "test" 、
                "roles" : [
                        {
                                "role" : "readAnyDatabase" 、
                                "db" : "admin"
                        }
                ]
        }

データベースアカウントの照会

インスタンスに属するすべてのデータベースアカウントを照会するには、次の方法を使用します。

以下のコマンドを実行します。

db.getCollection("system.us ers").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" : "" "" admin " } ] }
{"_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2 ****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS ****", "storedKey" "serverKey" : "Tf1zyJ ****/3/P3UMM47rr8 ****"} 、"SCRAM-SHA-256" : { "iterationCount" : 15000、"salt" : "wcWRhs9VXEsmNWtd7ZD **** + NbYXx8ugJ3p2 ****" 、"storedKey" : "A5GiH ****/tf70hakRY3U3joho3GrtFWQ *" 、" データベース: "*** 、" "" "" roles: "" db " : " admin " } ] } 

特定のデータベースに属するすべてのデータベースアカウントを照会するには、次のいずれかの方法を使用します。

説明

use database_nameコマンドを使用してデータベースを切り替えることができます。

  • 方法1: データベースでクエリコマンドを実行する

    ショーユーザー
    説明

    このコマンドは変更なしで使用できます。

    次の応答が返されます。

    {
            "_id" : "admin.root" 、
            "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414 ****") 、
            "user" : "root" 、
            "db" : "admin" 、
            "roles" : [
                    {
                            "role" : "root" 、
                            "db" : "admin"
                    }
            ],
            "mechanism" : [
                    "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"
                    }
            ],
            "mechanism" : [
                    "SCRAM-SHA-1" 、
                    「SCRAM-SHA-256」
            ]
    }
  • 方法2: adminデータベースでクエリコマンドを実行します。

    構文:

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

    database_nameは、アカウントを照会するデータベースの名前を示します。

    例:

    db.getCollection("system.us ers").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" : "" "" admin " } ] }
    {"_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2 ****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS ****", "storedKey" "serverKey" : "Tf1zyJ ****/3/P3UMM47rr8 ****"} 、"SCRAM-SHA-256" : { "iterationCount" : 15000、"salt" : "wcWRhs9VXEsmNWtd7ZD **** + NbYXx8ugJ3p2 ****" 、"storedKey" : "A5GiH ****/tf70hakRY3U3joho3GrtFWQ *" 、" データベース: "*** 、" "" "" roles: "" db " : " admin " } ] } 

特定のデータベースに属する単一のデータベースアカウントを照会するには、次の方法を使用します。

説明

単一のデータベースアカウントを照会するために使用されるコマンドは、adminデータベースで実行する必要があります。

構文:

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

パラメーター

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

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

例:

db.getCollection("system.us").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" " : " Q*n "" Tf1zyJJ ****/3/P3UMM47rr8 **** "} 、" SCRAM-SHA-256 " : { " iterationCount " : 15000、" salt " : " wcWRhs9VXEsmNWtd7ZD **** + NbYXx8ugJ3p2 **** "、" storedKey " : " A5GiH ****/tf70hakRY3U3joho3GrtFWQ **** /"" "" " : " ""} 、"roles" {*" "" "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など、管理データベースで使用可能なすべてのロールによって付与されるアクセス許可が含まれます。

説明

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

関連ドキュメント