Tous les produits
Search
Centre de documentation

ApsaraDB for MongoDB:Gérer les comptes de base de données à l'aide du shell mongo

Dernière mise à jour :Aug 08, 2026

Le shell mongo est un outil de gestion de base de données inclus avec MongoDB. Utilisez le shell mongo pour créer et interroger des comptes de base de données dans ApsaraDB for MongoDB.

Prérequis

  1. Une instance ApsaraDB for MongoDB est créée. Pour plus d'informations sur la création de différents types d'instances, consultez les rubriques suivantes :

  2. Vous êtes connecté à l'instance ApsaraDB for MongoDB via le shell mongo. Pour plus d'informations sur la connexion aux différents types d'instances, consultez les rubriques suivantes :

Précautions

Les noms des comptes de base de données doivent être uniques au sein d'une même base de données.

Créer un compte de base de données

Remarque
  • Les comptes de base de données créés à l'aide du shell mongo n'apparaissent pas sur la page Accounts de la console ApsaraDB for MongoDB.

  • Lors de la première création d'un compte de base de données via le shell mongo, vous devez authentifier le compte root intégré de l'instance dans la base de données admin.

  1. Basculez vers la base de données admin.

    use admin
    Remarque

    Exécutez cette commande telle quelle.

  2. Authentifiez le compte root.

    Syntaxe :

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

    Description des paramètres : password correspond au mot de passe du compte root.

    Exemple :

    db.auth("root","123456Aa")
  3. (Facultatif) Créez un rôle de base de données personnalisé.

    Pour restreindre l'accès à une collection spécifique, créez un rôle de base de données personnalisé afin d'assurer un contrôle d'accès granulaire.

    • Changement de base de données : exécutez la commande use database_name pour basculer vers la base de données cible, où database_name représente le nom de la base de données cible.

    • Portée du rôle : un rôle n'est utilisable que dans la base de données où il a été créé. Si un rôle s'applique à plusieurs bases de données, créez-le dans la base de données admin.

    Syntaxe :

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

    Description des paramètres :

    Parameter

    Description

    Example

    role_name

    Nom du nouveau rôle.

    readRole

    role_database_name

    Base de données sur laquelle le rôle dispose des autorisations d'opération.

    testDB

    collection_name

    Nom de la collection.

    testCollection

    actions

    Types d'opérations autorisés, tels que find, insert, update et remove.

    find

    roles

    Autres rôles hérités par ce rôle. Un tableau vide indique qu'il n'y a aucun héritage, mais le champ roles est obligatoire.

    []

    Remarque

    Pour plus d'informations, consultez createRole.

    Exemple :

    Créez un rôle nommé readRole dans la base de données testDB et accordez-lui l'autorisation find sur la collection testCollection.

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

    La réponse en cas de succès se présente comme suit :

    {
      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. Créez un compte de base de données.

    Méthode 1 : Basculer vers la base de données cible pour créer un compte

    Un compte de base de données appartient à la base de données dans laquelle il est créé.

    Exécutez la commande use database_name pour basculer vers une base de données, où database_name représente le nom de la base de données cible.

    Syntaxe :

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

    Description des paramètres :

    Parameter

    Description

    Example

    user_name

    Nom du compte de base de données.

    Si le nom du compte contient des caractères spéciaux, tels que :/?#[]@, vous devez encoder ces caractères en pourcentage. Pour savoir comment effectuer cet encodage, consultez Percent-Encoding.

    test

    password

    Mot de passe du compte de base de données.

    123456Aa

    role_name

    Rôle à attribuer au compte de base de données.

    Pour plus d'informations sur les valeurs valides, consultez Rôles des comptes de base de données.

    readAnyDatabase

    role_database_name

    Nom de la base de données à laquelle le rôle appartient.

    Par exemple, {role: "readAnyDatabase", db: "admin"} attribue le rôle readAnyDatabase de la base de données admin au compte. Cela fournit des autorisations en lecture seule sur toutes les bases de données.

    admin

    Exemple :

    Créez un compte de base de données nommé test dans la base de données admin, définissez le mot de passe sur 123456Aa et attribuez le rôle readAnyDatabase au compte test.

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

    La réponse en cas de succès se présente comme suit :

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

    Méthode 2 : Créer un compte sans changer de base de données

    Utilisez l'une des méthodes suivantes pour créer un compte de base de données sans changer de base de données.

    db.getMongo()

    Syntaxe :

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

    Description des paramètres :

    Parameter

    Description

    Example

    database_name

    Nom de la base de données à laquelle le compte appartient.

    admin

    user_name

    Nom du compte de base de données.

    Si le nom du compte contient des caractères spéciaux, tels que :/?#[]@, vous devez encoder ces caractères en pourcentage. Pour savoir comment effectuer cet encodage, consultez Percent-Encoding.

    test

    password

    Mot de passe du compte de base de données.

    123456Aa

    role_name

    Rôle à attribuer au compte de base de données.

    Pour plus d'informations sur les valeurs valides, consultez Rôles des comptes de base de données.

    readAnyDatabase

    role_database_name

    Nom de la base de données à laquelle le rôle appartient.

    Par exemple, {role: "readAnyDatabase", db: "admin"} attribue le rôle readAnyDatabase de la base de données admin au compte. Cela fournit des autorisations en lecture seule sur toutes les bases de données.

    admin

    Exemple :

    Créez un compte de base de données nommé test appartenant à la base de données admin, définissez le mot de passe sur 123456Aa et attribuez le rôle readAnyDatabase au compte test.

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

    La réponse en cas de succès se présente comme suit :

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

    db.getSiblingDB()

    Syntaxe :

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

    Description des paramètres :

    Parameter

    Description

    Example

    database_name

    Nom de la base de données à laquelle le compte appartient.

    admin

    user_name

    Nom du compte de base de données.

    Si le nom du compte contient des caractères spéciaux, tels que :/?#[]@, vous devez encoder ces caractères en pourcentage. Pour savoir comment effectuer cet encodage, consultez Percent-Encoding.

    test

    password

    Mot de passe du compte de base de données.

    123456Aa

    role_name

    Rôle à attribuer au compte de base de données.

    Pour plus d'informations sur les valeurs valides, consultez Rôles des comptes de base de données.

    readAnyDatabase

    role_database_name

    Nom de la base de données à laquelle le rôle appartient.

    Par exemple, {role: "readAnyDatabase", db: "admin"} attribue le rôle readAnyDatabase de la base de données admin au compte. Cela fournit des autorisations en lecture seule sur toutes les bases de données.

    admin

    Exemple :

    Créez un compte de base de données nommé test appartenant à la base de données admin, définissez le mot de passe sur 123456Aa et attribuez le rôle readAnyDatabase au compte test.

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

    La réponse en cas de succès se présente comme suit :

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

Interroger les comptes de base de données

Interroger tous les comptes de base de données d'une instance ApsaraDB for MongoDB

Exécutez la commande suivante dans la base de données admin :

db.getCollection("system.users").find()
Remarque

Exécutez cette commande telle quelle.

La réponse se présente comme suit :

{ "_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" } ] }

Interroger tous les comptes de base de données dans une base de données cible

Remarque

Exécutez la commande use database_name pour changer de base de données, où database_name représente le nom de la base de données cible.

  • Méthode 1 : Exécutez la commande d'interrogation dans la base de données cible.

    show users
    Remarque

    Exécutez cette commande telle quelle.

    La réponse se présente comme suit :

    {
            "_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"
            ]
    }
  • Méthode 2 : Exécutez la commande d'interrogation dans la base de données admin.

    Syntaxe :

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

    Description des paramètres : database_name correspond au nom de la base de données cible.

    Exemple :

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

    La réponse se présente comme suit :

    { "_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" } ] }

Interroger un seul compte de base de données dans une base de données cible

Remarque

Exécutez la commande d'interrogation d'un seul compte de base de données dans la base de données admin.

Syntaxe :

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

Description des paramètres :

  • user_name : nom du compte de base de données.

  • database_name : nom de la base de données à laquelle le compte appartient.

Exemple :

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

La réponse se présente comme suit :

{ "_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" } ] }

Rôles des comptes de base de données

Database

Role

Description

All databases

readOnly

Accorde des autorisations en lecture seule sur la base de données.

readWrite

Accorde des autorisations en lecture et en écriture sur la base de données.

userAdmin

Accorde des autorisations pour créer des comptes et des rôles dans la base de données.

dbAdmin

Accorde des autorisations pour gérer les collections dans la base de données.

dbOwner

Inclut toutes les autorisations de readWrite, userAdmin et dbAdmin.

enableSharding

Permet à une base de données dans une instance de cluster fragmenté d'être répartie sur plusieurs shards.

admin database

readAnyDatabase

Accorde des autorisations en lecture seule sur toutes les bases de données.

readWriteAnyDatabase

Accorde des autorisations en lecture et en écriture sur toutes les bases de données.

userAdminAnyDatabase

Accorde des autorisations pour créer des comptes et des rôles dans toutes les bases de données.

dbAdminAnyDatabase

Accorde des autorisations pour gérer les collections dans toutes les bases de données.

clusterMonitor

Accorde des autorisations pour exécuter des commandes de collecte d'informations.

hostManager

Accorde des autorisations pour exécuter des commandes telles que setParameter, killop, resync et killCursors.

clusterManager

Accorde des autorisations pour exécuter des commandes de gestion des nœuds.

clusterAdmin

Inclut toutes les autorisations de clusterMonitor, hostManager et clusterManager.

root

Inclut toutes les autorisations de la base de données admin, telles que readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase et dbAdminAnyDatabase.

Remarque

Pour plus d'informations sur les rôles, consultez Built-In Roles.

Références