Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

updateUser (comando de banco de dados)

updateUser

Atualiza o perfil do usuário no banco de dados no qual você executa o comando. Uma atualização em um campo substitui completamente os valores do campo anterior, inclusive atualizações nas arrays roles e authenticationRestrictions do usuário.

Dica

In mongosh, this command can also be run through the db.changeUserPassword() helper method.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

Aviso

Ao atualizar a array roles, você substitui completamente os valores da array anterior. Para adicionar ou remover funções sem substituir todas as funções existentes do usuário, use os comandos grantRolesToUser ou revokeRolesFromUser.

Para atualizar um usuário, você deve especificar o campo updateUser e pelo menos um outro campo, diferente de writeConcern.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

Importante

Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

O comando usa a seguinte sintaxe:

db.runCommand(
{
updateUser: "<username>",
pwd: passwordPrompt(), // Or "<cleartext password>"
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<scram-mechanism>", ... ],
digestPassword: <boolean>,
writeConcern: { <write concern> },
comment: <any>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição

updateUser

string

O nome do usuário a ser atualizado.

pwd

string

Opcional. A senha do usuário. O valor pode ser:

  • a senha do usuário em string de texto não criptografado ou

  • passwordPrompt() para solicitar a senha do usuário.

    Você pode usar o método passwordPrompt() em conjunto com vários métodos e comandos de gerenciamento de autenticação de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método ou comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shell mongo.

customData

documento

Opcional. Qualquer informação arbitrária.

roles

array

Opcional. As funções concedidas ao usuário. Uma atualização na array roles substitui os valores da array anterior.

writeConcern

documento

Opcional. O nível da write concern para a operação. Consulte Especificação de write concern.

authenticationRestrictions

array

Opcional. As restrições de autenticação que o servidor impõe ao usuário. Especifica uma lista de endereços IP e faixas CIDR a partir das quais o usuário tem permissão para se conectar ao servidor ou a partir das quais o servidor pode aceitar usuários.

mechanisms

array

Opcional. O mecanismo ou mecanismos SCRAM específicos para as credenciais do usuário. Se authenticationMechanisms for especificado, você só poderá especificar um subconjunto de authenticationMechanisms.

Se atualizar o campo de mecanismos sem a senha, você só poderá especificar um subconjunto dos mecanismos atuais do usuário, e somente as credenciais de usuário existentes para o mecanismo ou mecanismos especificados serão mantidas.

Se atualizar a senha junto com os mecanismos, o novo conjunto de credenciais será armazenado para o usuário.

Os valores válidos são:

  • "SCRAM-SHA-1"

    • Utiliza a função de hash SHA-1.
  • "SCRAM-SHA-256"

    • Utiliza a função de hash SHA-256.

    • Exige featureCompatibilityVersion definido para 4.0.

    • Requer que digestPassword seja true.

digestPassword

booleano

Opcional. Indica se o servidor ou o cliente digere a senha.

Se true (padrão), o servidor recebe a senha não digerida do cliente e a digere.

Se false, o cliente digere a senha e passa a senha digerida para o servidor. Não compatível com SCRAM-SHA-256

comment

any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

No campo roles, é possível especificar roles incorporadas e roles definidas pelo usuário.

To specify a role that exists in the same database where updateUser runs, you can either specify the role with the name of the role:

"readWrite"

Ou você pode especificar a role com um documento, como feito a seguir:

{ role: "<role>", db: "<database>" }

Para especificar uma role existente em outro banco de dados, especifique-a com um documento.

O documento authenticationRestrictions pode conter apenas os seguintes campos. O servidor emitirá um erro se o documento authenticationRestrictions contiver um campo não reconhecido:

Nome do campo
Valor
Descrição

clientSource

Array de endereços IP e/ou intervalos CIDR

Se presente, ao autenticar um usuário, o servidor verifica se o endereço IP do cliente está na lista fornecida ou se pertence a uma faixa CIDR na lista. Se o endereço IP do cliente não estiver presente, o servidor não autenticará o usuário.

serverAddress

Array de endereços IP e/ou intervalos CIDR

Uma lista de endereços IP ou faixas CIDR às quais o cliente pode se conectar. Se estiver presente, o servidor verificará se a conexão do cliente foi aceita por meio de um endereço IP na lista fornecida. Se a conexão foi aceita por meio de um endereço IP não reconhecido, o servidor não autenticará o usuário.

Importante

Se um usuário herdar múltiplas roles com restrições de autenticação incompatíveis, esse usuário se tornará inutilizável.

Por exemplo, se um usuário herdar uma função na qual o campo clientSource é ["198.51.100.0"] e outra função na qual o campo clientSource é ["203.0.113.0"], o servidor não poderá autenticar o usuário.

Para obter mais informações sobre autenticação no MongoDB, consulte Autenticação em implementações autogerenciadas.

Aviso

By default, updateUser sends all specified data to the MongoDB instance in cleartext, even if using passwordPrompt(). Use TLS transport encryption to protect communications between clients and the server, including the password sent by updateUser. For instructions on enabling TLS transport encryption, see Configure MongoDB Instances for TLS/SSL Encryption.

O MongoDB não armazena a senha no cleartext. A senha só estará vulnerável em trânsito entre o cliente e o servidor e somente se a criptografia de transporte TLS não estiver habilitada.

Você deve ter acesso que inclua a revokeRole ação em todos os bancos de dados para atualizar a array roles de um usuário.

É necessário ter a grantRole ação no banco de dados de uma função para adicionar uma função a um usuário.

Para alterar o campo pwd ou de outro customData usuário, é necessário ter as changePassword ações changeCustomData e, respectivamente, no banco de dados desse usuário.

Para modificar sua própria senha e dados personalizados, você deve ter privilégios que concedam changeOwnPassword e changeOwnCustomData ações respectivamente no banco de dados do usuário.

Dado um usuário appClient01 no banco de dados do products com as seguintes informações de usuário:

{
"_id" : "products.appClient01",
"userId" : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
"user" : "appClient01",
"db" : "products",
"customData" : { "empID" : "12345", "badge" : "9156" },
"roles" : [
{ "role" : "readWrite",
"db" : "products"
},
{ "role" : "read",
"db" : "inventory"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}

O seguinte updateUser comando substitui completamente customData os roles dados e do usuário:

use products
db.runCommand( {
updateUser : "appClient01",
customData : { employeeId : "0x3039" },
roles : [ { role : "read", db : "assets" } ]
} )

O usuário appClient01 no banco de dados do products agora tem as seguintes informações de usuário:

{
"_id" : "products.appClient01",
"userId" : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
"user" : "appClient01",
"db" : "products",
"customData" : { "employeeId" : "0x3039" },
"roles" : [
{ "role" : "read",
"db" : "assets"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}