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
-
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:
-
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
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.
-
Mude para o banco de dados admin.
use adminNotaExecute este comando sem modificações.
-
Autentique a conta root.
Sintaxe:
db.auth("root","password")Descrição do parâmetro:
passwordespecifica a senha da conta root.Exemplo:
db.auth("root","123456Aa") -
(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_namepara mudar para o banco de dados desejado, ondedatabase_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_nameNome da nova função.
readRole
role_database_nameBanco de dados sobre o qual a função tem permissões de operação.
testDB
collection_nameNome da coleção.
testCollection
actionsTipos de operações permitidas, como
find,insert,updateeremove.find
rolesOutras funções herdadas por esta função. Um array vazio indica que não há herança, mas o campo
rolesé obrigatório.[]
NotaPara 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 }) } -
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_namepara mudar para um banco de dados, ondedatabase_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_nameNome 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
passwordSenha da conta de banco de dados.
123456Aa
role_nameFunçã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_nameNome 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_nameNome do banco de dados ao qual a conta pertence.
admin
user_nameNome 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
passwordSenha da conta de banco de dados.
123456Aa
role_nameFunçã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_nameNome 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_nameNome do banco de dados ao qual a conta pertence.
admin
user_nameNome 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
passwordSenha da conta de banco de dados.
123456Aa
role_nameFunçã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_nameNome 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()
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
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 usersNotaExecute 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_nameespecifica 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
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. |
Para mais informações sobre funções, consulte Built-In Roles.