Definición
db.createUser(user, writeConcern)Crea un nuevo usuario para la base de datos en la que se ejecuta el método.
db.createUser()devuelve un error de usuario duplicado si el usuario ya existe en la base de datos.Importante
Método mongosh
Esta página documenta un método
mongosh. Esta no es la documentación para los comandos de base de datos ni para los drivers específicos de lenguajes, como Nodo.js.Para el comando de base de datos, consulte el
createUserdominio.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
El método
db.createUser()tiene la siguiente sintaxis:CampoTipoDescripciónuserDocumento
El documento con la información de autenticación y acceso sobre el usuario que se va a crear.
writeConcernDocumento
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).
El documento
userdefine al usuario y tiene el siguiente formato:Tip
Puedes usar el método
passwordPrompt()en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shellmongo.{ user: "<name>", 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-SHA-1|SCRAM-SHA-256>", ... ], passwordDigestor: "<server|client>" } El documento
usertiene los siguientes campos:CampoTipoDescripciónuserstring
El nombre del nuevo usuario.
pwdstring
La contraseña del usuario. El campo
pwdno es obligatorio si ejecutasdb.createUser()en la base de datos$externalpara crear usuarios con credenciales almacenadas externamente a MongoDB.El valor puede ser:
la contraseña del usuario en string de texto sin formato, o
passwordPrompt()para solicitar la contraseña del usuario.
Puedes usar el método
passwordPrompt()en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shellmongo.customDataDocumento
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.
rolesarreglo
Los roles otorgados al usuario. Puede especificar un arreglo vacío
[]para crear usuarios sin roles.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.
mechanismsarreglo
Opcional. Especifique el mecanismo o los mecanismos SCRAM para crear credenciales de usuario SCRAM. Si se especifica
authenticationMechanisms, solo puede especificar un subconjunto delauthenticationMechanisms.Los valores válidos son:
"SCRAM-SHA-1"Utiliza la función de hash
SHA-1.
"SCRAM-SHA-256"Utiliza la función de hash
SHA-256.Requiere que passwordDigestor sea
server.
El valor por defecto es tanto
SCRAM-SHA-1comoSCRAM-SHA-256.passwordDigestorstring
Opcional. Indica si el servidor o el cliente procesa la contraseña.
Los valores disponibles son:
"server"(por defecto)- El servidor recibe la contraseña sin procesar del cliente y la procesa.
"client"(No es compatible conSCRAM-SHA-256)- El cliente procesa la contraseña y la pasa al servidor.
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 db.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, consulta Autenticación en implementaciones autogestionadas.
El método db.createUser() envuelve el comando createUser.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
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.
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.
Comportamiento
ID de usuario
MongoDB asigna automáticamente un userId único al usuario al momento de la creación.
Set de réplicas
Si se ejecuta en un set de réplicas, db.createUser() se ejecuta utilizando el nivel de confirmación de escritura "majority" por defecto.
Encriptación
Advertencia
Por defecto, db.createUser() envía todos los datos especificados a la instancia de MongoDB en texto sin formato, incluso si utiliza passwordPrompt(). Utilice el cifrado de transporte TLS para proteger las comunicaciones entre los clientes y el servidor, incluida la contraseña enviada por db.createUser(). Para obtener instrucciones sobre cómo habilitar el cifrado de transporte TLS, consulte Configurar instancias de MongoDB para TLS/SSL en implementaciones autogestionadas.
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.
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.
Ejemplos
La siguiente db.createUser() operación crea el usuario accountAdmin01 en la base de datos products.
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use products db.createUser( { user: "accountAdmin01", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite"] }, { w: "majority" , wtimeout: 5000 } )
La operación otorga a accountAdmin01 los siguientes roles:
los roles
clusterAdminyreadAnyDatabaseen la base de datosadminel rol
readWriteen la base de datosproducts
Crear usuario con roles
La siguiente operación crea accountUser en la base de datos products y otorga al usuario los roles readWrite y dbAdmin.
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use products db.createUser( { user: "accountUser", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ "readWrite", "dbAdmin" ] } )
Crear usuario sin roles
La siguiente operación crea un usuario llamado reportsUser en la base de datos admin, pero aún no asigna roles:
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use admin db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ ] } )
Crear usuario administrativo con roles
La siguiente operación crea un usuario llamado appAdmin en la base de datos admin y le da al usuario readWrite acceso a la base de datos config, lo que le permite al usuario cambiar ciertas configuraciones para clústeres particionados, como la configuración del balanceador.
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use admin db.createUser( { user: "appAdmin", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "config" }, "clusterAdmin" ] } )
Crear usuario con restricciones de autenticación
La siguiente operación crea un usuario llamado restricted en la base de datos admin. Este usuario solo puede autenticarse si se conecta desde la dirección IP 192.0.2.0 a la dirección IP 198.51.100.0.
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use admin db.createUser( { user: "restricted", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "reporting" } ], authenticationRestrictions: [ { clientSource: ["192.0.2.0"], serverAddress: ["198.51.100.0"] } ] } )
Crear usuario con SCRAM-SHA-256 credenciales únicamente
Nota
Para utilizar SCRAM-SHA-256, featureCompatibilityVersion debe configurarse en 4.0. Para obtener más información sobre featureCompatibilityVersion, consulte Obtener FeatureCompatibilityVersion y setFeatureCompatibilityVersion.
La siguiente operación crea un usuario que solo tiene credenciales SCRAM-SHA-256.
Tip
Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.
use reporting db.createUser( { user: "reportUser256", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "reporting" } ], mechanisms: [ "SCRAM-SHA-256" ] } )
Si se establece el parámetro authenticationMechanisms, el campo mechanisms solo puede incluir valores especificados en el parámetro authenticationMechanisms.