Definición
createUserCrea un nuevo usuario en la base de datos donde se ejecuta el comando. El comando
createUserdevuelve un error de usuario duplicado si el usuario existe.Tip
mongoshEn, este comando también se puede ejecutar a través deldb.createUser()método auxiliar.Los métodos asistente son convenientes para usuarios de
mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Importante
Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.
Sintaxis
El comando tiene la siguiente sintaxis:
Tip
Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores passwordPrompt() del mongo shell.
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 comandos
createUser tiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | El nombre del nuevo usuario. |
| string | La contraseña del usuario. El campo El valor puede ser:
Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores |
| Documento | Opcional. Cualquier información arbitraria. Este campo puede ser utilizado para almacenar cualquier dato que un administrador quiera asociar con este usuario en particular. Por ejemplo, esto podría ser el nombre completo del usuario o el ID de empleado. |
| arreglo | Los roles otorgados al usuario. Puede especificar un arreglo vacío |
| booleano | Opcional. Indica si el servidor o el cliente procesa la contraseña. Si es verdadero, el servidor recibe la contraseña no digerida del cliente y la digiere. Si es falso, el cliente digiere la contraseña y la pasa al servidor. No compatible con El valor por defecto es |
| Documento | Opcional. El nivel de confirmación de escritura (write concern) de la operación. Consulte Especificación de nivel de confirmación de escritura (write concern). |
| arreglo | Opcional. Las restricciones de autenticación que el servidor aplica al usuario creado. Especifica una lista de direcciones IP y RangosCIDR desde los cuales el usuario puede conectarse al servidor o desde los cuales el servidor puede aceptar usuarios. |
| arreglo | Opcional. Especifique el mecanismo o los mecanismos SCRAM para crear credenciales de usuario SCRAM. Si se especifica Los valores válidos son:
El valor predeterminado para featureCompatibilityVersion es El valor por defecto para featureCompatibilityVersion es |
| booleano | Opcional. Indica si el servidor o el cliente procesa la contraseña. Si es verdadero, el servidor recibe la contraseña no digerida del cliente y la digiere. Si es falso, el cliente digiere la contraseña y la pasa al servidor. No compatible con El valor por defecto es |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
Roles
En el campo roles, puede especificar tanto roles de funcionalidad incorporada como roles definidos por el usuario.
Para especificar un rol que existe en la misma base de datos donde se ejecuta createUser, puedes especificar el rol utilizando el nombre del rol:
"readWrite"
O puede especificar el rol con un documento, como en:
{ role: "<role>", db: "<database>" }
Para especificar un rol que existe en una base de datos diferente, especifique el rol mediante un documento.
Restricciones de autenticación
El documento authenticationRestrictions solo puede contener los campos siguientes. El servidor genera un error si el documento authenticationRestrictions contiene un campo no reconocido:
Nombre de campo | Valor | Descripción |
|---|---|---|
| Arreglo de direcciones IP y/o rangos CIDR | Si está presente, al autenticar a un usuario, el servidor verifica que la dirección IP del cliente esté en la lista proporcionada o que pertenezca a un rango CIDR de la lista. Si la dirección IP del cliente no está presente, el servidor no autentica al usuario. |
| Arreglo de direcciones IP y/o rangos CIDR | Una lista de direcciones IP o rangos CIDR a los que el cliente puede conectarse. Si está presente, el servidor verificará que la conexión del cliente haya sido aceptada mediante una dirección IP de la lista proporcionada. Si la conexión fue aceptada desde una dirección IP no reconocida, el servidor no autentica al usuario. |
Importante
Si un usuario hereda múltiples roles con restricciones de autenticación incompatibles, ese usuario se vuelve inutilizable.
Por ejemplo, si un usuario hereda un rol en el que el campo clientSource es ["198.51.100.0"] y otro rol en el que el campo clientSource es ["203.0.113.0"], el servidor no puede autenticar al usuario.
Para obtener más información sobre la autenticación en MongoDB,consulte Autenticación.
Comportamiento
ID de usuario
MongoDB asigna automáticamente un userId único al usuario al momento de la creación.
Encriptación
Advertencia
De forma predeterminada, createUser envía todos los datos especificados a la instancia de MongoDB en texto sin cifrar, incluso si passwordPrompt() se usa. Utilice el cifrado de transporte TLS para proteger las comunicaciones entre los clientes y el servidor, incluida la contraseña enviada createUser por. Para obtener instrucciones sobre cómo habilitar el cifrado de transporte TLS, consulte Configurar mongod y mongos para TLS/SSL.
MongoDB no almacena la contraseña en texto sin formato. La contraseña es vulnerable solo durante el tránsito entre el cliente y el servidor, y únicamente si el cifrado de transporte TLS no está activado.
Credenciales externas
Los usuarios creados en la base de datos $external deben tener las credenciales almacenadas fuera de MongoDB, como, por ejemplo, en instalaciones de MongoDB Enterprise que utilizan Kerberos.
Para usar sesiones de cliente y garantías de coherencia causal con usuarios de autenticación $external (usuarios Kerberos, LDAP o X.509), los nombres de usuario no pueden superar los 10k bytes.
local Database
No puede crear usuarios en la base de datos local.
Límites de nombre de usuario
Los nombres de usuario deben constar de al menos un carácter y no pueden tener más de 7MB.
Acceso requerido
Para crear un nuevo usuario en una base de datos, debe tener la acción
createUsersobre ese recurso de base de datos.Para otorgar roles a un usuario, debe tener la acción
grantRoleen la base de datos del rol.
Los userAdmin y userAdminAnyDatabase roles integrados proporcionan acciones createUser y grantRole sobre sus respectivos recursos.
Ejemplo
El siguiente comando crea un createUser usuario accountAdmin01 en la products base de datos. El comando asigna a accountAdmin01 los clusterAdmin readAnyDatabase roles y en la admin base de datos y el readWrite rol en la products base de datos:
Tip
Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores passwordPrompt() del mongo shell.
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 } } )