Definição
createUserCreates a new user on the database where you run the command. The
createUsercommand returns a duplicate user error if the user exists.Dica
In
mongosh, this command can also be run through thedb.createUser()helper method.Helper methods are convenient for
mongoshusers, 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.
Compatibilidade
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.
Sintaxe
O comando tem a seguinte sintaxe:
Dica
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.
db.runCommand( { createUser: "<name>", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], writeConcern: { <write concern> }, authenticationRestrictions: [ { clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] }, ... ], mechanisms: [ "<scram-mechanism>", ... ], digestPassword: <boolean>, comment: <any> } )
Campos de comando
createUser tem os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| string | O nome do novo usuário. |
| string | The user's password. The O valor pode ser:
Você pode usar o método |
| documento | Opcional. Qualquer informação arbitrária. Este campo pode ser usado para armazenar quaisquer dados que um administrador deseja associar a este usuário específico. Por exemplo, este pode ser o nome completo do usuário ou ID do funcionário. |
| array | As funções concedidas ao usuário. Pode especificar uma array vazia |
| booleano | Opcional. Indica se o servidor ou o cliente digere a senha. Se verdadeiro, o servidor recebe senha não digerida do cliente e digere a senha. Se falso, o cliente digere a senha e passa a senha digerida para o servidor. Não compatível com O valor padrão é |
| documento | Opcional. O nível da write concern para a operação. Consulte Especificação de write concern. |
| array | Opcional. As restrições de autenticação que o servidor impõe ao usuário criado. 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. |
| array | Opcional. Especifique o mecanismo ou mecanismos específicos do SCRAM para criar credenciais de usuário do SCRAM. Se Os valores válidos são:
O padrão para featureCompatibilityVersion é O padrão para featureCompatibilityVersion é |
| booleano | Opcional. Indica se o servidor ou o cliente digere a senha. Se verdadeiro, o servidor recebe senha não digerida do cliente e digere a senha. Se falso, o cliente digere a senha e passa a senha digerida para o servidor. Não compatível com O valor padrão é |
| 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). |
Funções
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 createUser 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.
Restrições de autenticação
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 |
|---|---|---|
| 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. |
| 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.
Comportamento
ID do usuário
O MongoDB atribui automaticamente um userId exclusivo ao usuário na criação.
Criptografia
Aviso
By default, createUser 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 createUser. 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.
Credenciais externas
Os usuários criados no banco de dados do $external devem ter credenciais armazenadas externamente no MongoDB, como, por exemplo, com instalações do MongoDB Enterprise que utilizam Kerberos.
Para usar Sessões de cliente e garantias de consistência causal com usuários de autenticação $external (usuários Kerberos, LDAP ou X.509), os nomes de usuário não podem ter mais de 10k bytes.
local Database
Você não pode criar usuários no banco de dados local.
Limites de nome de usuário
Os nomes de usuário devem conter pelo menos um caractere e não podem ser maiores que 7 MB.
Acesso necessário
Para criar um novo usuário em um banco de dados, você deve ter a
createUseração neste recurso do banco de dados.Para conceder funções a um usuário, você deve ter a ação
grantRoleno banco de dados da função.
Os papéis embutidos do userAdmin e userAdminAnyDatabase fornecem ações do createUser e grantRole em seus respectivos recursos.
Exemplo
The following createUser command creates a user accountAdmin01 on the products database. The command gives accountAdmin01 the clusterAdmin and readAnyDatabase roles on the admin database and the readWrite role on the products database:
Dica
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.
db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01", pwd: passwordPrompt(), customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite" ], writeConcern: { w: "majority" , wtimeout: 5000 } } )