Todos os produtos
Search
Central de documentação

ApsaraDB for MongoDB:Gerencie contas de banco de dados com o mongo shell

Última atualização: Jul 17, 2026

O mongo shell é uma ferramenta de gerenciamento de banco de dados incluída no MongoDB. Use o mongo shell para criar e consultar contas de banco de dados no ApsaraDB for MongoDB.

Pré-requisitos

  1. Crie uma instância do ApsaraDB for MongoDB. Para mais informações sobre como criar diferentes tipos de instâncias, consulte os seguintes tópicos:

  2. Conecte-se à instância do ApsaraDB for MongoDB pelo mongo shell. Para mais detalhes sobre como se conectar a diferentes tipos de instâncias, consulte os tópicos a seguir:

Precauções

As contas de banco de dados devem ser únicas dentro de um mesmo banco de dados.

Crie uma conta de banco de dados

Nota
  • Contas de banco de dados criadas via mongo shell não aparecem na página Accounts no console do ApsaraDB for MongoDB.

  • Ao criar uma conta de banco de dados pelo mongo shell pela primeira vez, autentique a conta root integrada da instância no banco de dados admin.

  1. Mude para o banco de dados admin.

    use admin
    Nota

    Execute este comando sem modificações.

  2. Autentique a conta root.

    Sintaxe:

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

    Descrição do parâmetro: password especifica a senha da conta root.

    Exemplo:

    db.auth("root","123456Aa")
  3. (Opcional) Crie uma função personalizada de banco de dados.

    Para restringir o acesso a uma coleção específica, crie uma função personalizada para controle de acesso granular.

    • Trocar de banco de dados: Execute o comando use database_name para mudar para o banco de dados desejado, onde database_name é o nome do banco de dados alvo.

    • Escopo da função: Uma função só pode ser utilizada no banco de dados onde foi criada. Caso a função precise abranger múltiplos bancos de dados, crie-a no banco de dados admin.

    Sintaxe:

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

    Descrição dos parâmetros:

    Parâmetro

    Descrição

    Exemplo

    role_name

    Nome da nova função.

    readRole

    role_database_name

    Banco de dados sobre o qual a função tem permissões de operação.

    testDB

    collection_name

    Nome da coleção.

    testCollection

    actions

    Tipos de operações permitidas, como find, insert, update e remove.

    find

    roles

    Outras funções herdadas por esta função. Um array vazio indica que não há herança, mas o campo roles é obrigatório.

    []

    Nota

    Para mais informações, consulte createRole.

    Exemplo:

    Crie uma função chamada readRole no banco de dados testDB e conceda a ela a permissão find na coleção testCollection.

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

    Uma resposta bem-sucedida tem o seguinte formato:

    {
      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. Crie uma conta de banco de dados.

    Método 1: Mudar para o banco de dados alvo para criar uma conta

    Uma conta de banco de dados pertence ao banco de dados onde foi criada.

    Execute o comando use database_name para mudar para um banco de dados, onde database_name é o nome do banco de dados alvo.

    Sintaxe:

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

    Descrição dos parâmetros:

    Parâmetro

    Descrição

    Exemplo

    user_name

    Nome da conta de banco de dados.

    Se o nome da conta contiver caracteres especiais, como :/?#[]@, codifique-os em porcentagem. Para saber como realizar essa codificação, consulte Percent-Encoding.

    test

    password

    Senha da conta de banco de dados.

    123456Aa

    role_name

    Função a ser concedida à conta de banco de dados.

    Para mais informações sobre os valores válidos, consulte Funções das contas de banco de dados.

    readAnyDatabase

    role_database_name

    Nome do banco de dados ao qual a função pertence.

    Por exemplo, {role: "readAnyDatabase", db: "admin"} concede a função readAnyDatabase do banco de dados admin à conta, fornecendo permissões de somente leitura em todos os bancos de dados.

    admin

    Exemplo:

    Crie uma conta de banco de dados chamada test no banco de dados admin, defina a senha como 123456Aa e conceda a função readAnyDatabase à conta test.

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

    Uma resposta bem-sucedida tem o seguinte formato:

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

    Método 2: Criar uma conta sem trocar de banco de dados

    Use um dos métodos abaixo para criar uma conta de banco de dados sem precisar mudar de banco de dados.

    db.getMongo()

    Sintaxe:

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

    Descrição dos parâmetros:

    Parâmetro

    Descrição

    Exemplo

    database_name

    Nome do banco de dados ao qual a conta pertence.

    admin

    user_name

    Nome da conta de banco de dados.

    Se o nome da conta contiver caracteres especiais, como :/?#[]@, codifique-os em porcentagem. Para saber como realizar essa codificação, consulte Percent-Encoding.

    test

    password

    Senha da conta de banco de dados.

    123456Aa

    role_name

    Função a ser concedida à conta de banco de dados.

    Para mais informações sobre os valores válidos, consulte Funções das contas de banco de dados.

    readAnyDatabase

    role_database_name

    Nome do banco de dados ao qual a função pertence.

    Por exemplo, {role: "readAnyDatabase", db: "admin"} concede a função readAnyDatabase do banco de dados admin à conta, fornecendo permissões de somente leitura em todos os bancos de dados.

    admin

    Exemplo:

    Crie uma conta de banco de dados chamada test pertencente ao banco de dados admin, defina a senha como 123456Aa e conceda a função readAnyDatabase à conta test.

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

    Uma resposta bem-sucedida tem o seguinte formato:

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

    db.getSiblingDB()

    Sintaxe:

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

    Descrição dos parâmetros:

    Parâmetro

    Descrição

    Exemplo

    database_name

    Nome do banco de dados ao qual a conta pertence.

    admin

    user_name

    Nome da conta de banco de dados.

    Se o nome da conta contiver caracteres especiais, como :/?#[]@, codifique-os em porcentagem. Para saber como realizar essa codificação, consulte Percent-Encoding.

    test

    password

    Senha da conta de banco de dados.

    123456Aa

    role_name

    Função a ser concedida à conta de banco de dados.

    Para mais informações sobre os valores válidos, consulte Funções das contas de banco de dados.

    readAnyDatabase

    role_database_name

    Nome do banco de dados ao qual a função pertence.

    Por exemplo, {role: "readAnyDatabase", db: "admin"} concede a função readAnyDatabase do banco de dados admin à conta, fornecendo permissões de somente leitura em todos os bancos de dados.

    admin

    Exemplo:

    Crie uma conta de banco de dados chamada test pertencente ao banco de dados admin, defina a senha como 123456Aa e conceda a função readAnyDatabase à conta test.

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

    Uma resposta bem-sucedida tem o seguinte formato:

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

Consultar contas de banco de dados

Consultar todas as contas de banco de dados de uma instância do ApsaraDB for MongoDB

Execute o seguinte comando no banco de dados admin:

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

Execute este comando sem modificações.

A resposta tem o seguinte formato:

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

Consultar todas as contas de banco de dados em um banco de dados alvo

Nota

Execute o comando use database_name para trocar de banco de dados, onde database_name é o nome do banco de dados alvo.

  • Método 1: Execute o comando de consulta no banco de dados alvo.

    show users
    Nota

    Execute este comando sem modificações.

    A resposta tem o seguinte formato:

    {
            "_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étodo 2: Execute o comando de consulta no banco de dados admin.

    Sintaxe:

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

    Descrição do parâmetro: database_name especifica o nome do banco de dados alvo.

    Exemplo:

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

    A resposta tem o seguinte formato:

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

Consultar uma única conta de banco de dados em um banco de dados alvo

Nota

Execute o comando para consultar uma única conta de banco de dados no banco de dados admin.

Sintaxe:

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

Descrição dos parâmetros:

  • user_name: especifica o nome da conta de banco de dados.

  • database_name: especifica o nome do banco de dados ao qual a conta pertence.

Exemplo:

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

A resposta tem o seguinte formato:

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

Funções das contas de banco de dados

Banco de dados

Função

Descrição

Todos os bancos de dados

readOnly

Concede permissões de somente leitura no banco de dados.

readWrite

Concede permissões de leitura e escrita no banco de dados.

userAdmin

Permite criar contas e funções no banco de dados.

dbAdmin

Permite gerenciar coleções no banco de dados.

dbOwner

Inclui todas as permissões de readWrite, userAdmin e dbAdmin.

enableSharding

Permite que um banco de dados em uma instância de sharded cluster seja fragmentado em vários shards.

Banco de dados admin

readAnyDatabase

Concede permissões de somente leitura em todos os bancos de dados.

readWriteAnyDatabase

Concede permissões de leitura e escrita em todos os bancos de dados.

userAdminAnyDatabase

Permite criar contas e funções em todos os bancos de dados.

dbAdminAnyDatabase

Permite gerenciar coleções em todos os bancos de dados.

clusterMonitor

Permite executar comandos de coleta de informações.

hostManager

Permite executar comandos como setParameter, killop, resync e killCursors.

clusterManager

Permite executar comandos de gerenciamento de nós.

clusterAdmin

Inclui todas as permissões de clusterMonitor, hostManager e clusterManager.

root

Inclui todas as permissões no banco de dados admin, como readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase e dbAdminAnyDatabase.

Nota

Para mais informações sobre funções, consulte Built-In Roles.

Referências