Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
createUser
Nesta página
Definição
createUser
Cria um novo usuário no banco de dados onde você executa o comando. O comando
createUser
retorna um erro de usuário duplicado caso o usuário exista. O comandocreateUser
utiliza a seguinte sintaxe:Dica
A partir da versão 4.2 do shell
mongo
, você pode usar o métodopasswordPrompt()
em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shellmongo
.{ 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>", ... ], //Available starting in MongoDB 4.0 digestPassword: <boolean>, comment: <any> }
createUser
tem os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
createUser | string | O nome do novo usuário. |
pwd | string | A senha do usuário. O campo O valor pode ser:
DicaA partir da versão 4.2 do shell |
customData | 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. |
roles | variedade | As funções concedidas ao usuário. Pode especificar uma array vazia [] para criar usuários sem papéis. |
digestPassword | boleano | 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 Alterado na versão 4.0: o valor padrão é |
writeConcern | documento | Opcional. O nível da referência de escrita para a operação de criação. O documento writeConcern usa os mesmos campos do comando getLastError . |
authenticationRestrictions | variedade | Opcional. As restrições de autenticação que o servidor impõe ao usuário criado. Especifica uma lista de endereços IP e intervalos CIDR a partir dos quais o usuário tem permissão para se conectar ao servidor ou a partir dos quais o servidor pode aceitar usuários. |
mechanisms | variedade | 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 é Novidades na versão 4.0. |
digestPassword | boleano | 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 Alterado na versão 4.0: o valor padrão é |
comment | qualquer | 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.
Para especificar uma role que existe no mesmo banco de dados onde o createUser
é executado, você pode especificar a role com o nome dela:
"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
Novidade na versão 3.6.
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 faixas 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 faixas 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.
Comportamento
ID do usuário
A partir da versão 4.0.9, O MongoDB atribui automaticamente um userId
exclusivo ao usuário na criação.
Criptografia
Aviso
Por padrão, createUser
envia todos os dados especificados para a instância do MongoDB em texto não criptografado, mesmo se estiver usando passwordPrompt()
. Use a criptografia de transporte TLS para proteger as comunicações entre clientes e o servidor, incluindo a senha enviada por createUser
. Para obter instruções sobre como habilitar a criptografia de transporte TLS, consulte Configurar mongod
e mongos
para TLS/SSL.
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
Banco de dados
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 obrigatório
Para criar um novo usuário em um banco de dados, você deve ter a
createUser
ação neste recurso do banco de dados.Para conceder funções a um usuário, você deve ter a ação
grantRole
no 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
O comando createUser
a seguir cria um usuário accountAdmin01
no banco de dados products
. O comando fornece accountAdmin01
as roles clusterAdmin
e readAnyDatabase
no banco de dados admin
e a role readWrite
no banco de dados products
:
Dica
A partir da versão 4.2 do shell mongo
, você pode usar o método passwordPrompt()
em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/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 } } )