Definición
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Importante
Este comando tiene soporte limitado en los clústeres Flex y M0. Para obtener más información, 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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { usersInfo: <various>, showCredentials: <Boolean>, showCustomData: <Boolean>, showPrivileges: <Boolean>, showAuthenticationRestrictions: <Boolean>, filter: <document>, comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| varios | El/los usuario(s) sobre los que se devolverá información. El argumento de |
| booleano | opcional. Configura en Por defecto, este campo es |
| booleano | opcional. Configúralo en Por defecto, este campo es Nuevo en la versión 5.2. |
| booleano | opcional. Configúralo en Por defecto, este campo es Si ves todos los usuarios, no puedes especificar este campo. |
| booleano | opcional. Establece en Por defecto, este campo es Si ves todos los usuarios, no puedes especificar este campo. |
| Documento | opcional. Un documento que especifica |
| 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.). |
usersInfo: <various>
{ usersInfo: <various> }
El argumento de usersInfo tiene múltiples formas según la información solicitada:
Argument | Devuelve |
|---|---|
| Devuelve información sobre los usuarios en la base de datos en la que se ejecuta el comando.
|
| Devolver información sobre un usuario específico que existe en la base de datos donde se ejecuta el comando.
|
| Devuelve información sobre el usuario, especificada por el nombre y la base de datos. |
{ usersInfo: [ { user: <name>, db: <db> }, ... ] }{ usersInfo: [ <username1>, ... ] } | Devuelve información sobre los usuarios especificados. |
| Devuelve información sobre los usuarios en todas las bases de datos. |
Acceso requerido
Los usuarios siempre pueden ver su propia información.
Para ver la información de otro usuario, el usuario que ejecuta el comando debe contar con privilegios que incluyan la acción viewUser en la base de datos del otro usuario.
Salida
La siguiente información puede ser devuelta por usersInfo, dependiendo de las opciones especificadas:
{ "users" : [ { "_id" : "<db>.<username>", "userId" : <UUID>, "user" : "<username>", "db" : "<db>", "mechanisms" : [ ... ], "customData" : <document>, "roles" : [ ... ], "credentials": { ... }, // only if showCredentials: true "inheritedRoles" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedPrivileges" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedAuthenticationRestrictions" : [ ] // only if showPrivileges: true or showAuthenticationRestrictions: true "authenticationRestrictions" : [ ... ] // only if showAuthenticationRestrictions: true }, ... ], "ok" : 1 }
Ejemplos
Ver usuarios específicos
Para ver información y privilegios, pero no las credenciales, del usuario "Kari" definido en la base de datos "home", ejecute el siguiente comando:
db.runCommand( { usersInfo: { user: "Kari", db: "home" }, showPrivileges: true } )
Para ver un usuario que existe en la base de datos actual, puedes especificar solo el nombre del usuario. Por ejemplo, si estás en la base de datos home y tienes un usuario llamado "Kari" en la base de datos home, puedes ejecutar el siguiente comando:
db.getSiblingDB("home").runCommand( { usersInfo: "Kari", showPrivileges: true } )
Ver varios usuarios
Para ver la información de varios usuarios, utilice una matriz, con o sin los campos opcionales showPrivileges y showCredentials. Por ejemplo:
db.runCommand( { usersInfo: [ { user: "Kari", db: "home" }, { user: "Li", db: "myApp" } ], showPrivileges: true } )
Ver todos los usuarios de una base de datos
Para ver todos los usuarios en la base de datos en la que se ejecuta el comando, utilice un documento de comando similar al siguiente:
db.runCommand( { usersInfo: 1 } )
Al ver todos los usuarios, puedes especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Ver todos los usuarios de una base de datos que coincidan con el filtro especificado
El comando puede aceptar usersInfo un filter documento para devolver información de los usuarios que coincidan con la condición de filtro.
Para ver todos los usuarios en la base de datos actual que tienen el rol especificado, utiliza un documento de comando similar al siguiente:
db.runCommand( { usersInfo: 1, filter: { roles: { role: "root", db: "admin" } } } )
Al ver todos los usuarios, puedes especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Ver todos los usuarios con credenciales SCRAM-SHA-1
El comando puede aceptar usersInfo un filter documento para devolver información de los usuarios que coincidan con la condición de filtro.
La siguiente operación devuelve todos los usuarios que tienen credenciales SCRAM-SHA-1. Específicamente, el comando devuelve todos los usuarios de todas las bases de datos y luego utiliza la etapa de $match para aplicar el filtro especificado a los usuarios.
db.runCommand( { usersInfo: { forAllDBs: true}, filter: { mechanisms: "SCRAM-SHA-1" } } )
Al ver todos los usuarios, puedes especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Omitir datos personalizados de la salida
Novedad en la versión 5.2: Para omitir los datos personalizados de los usuarios en la salida usersInfo establece la opción showCustomData en false.
Utilice el comando para crear un usuario createUser llamado accountAdmin01 en la products base de datos:
db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01", pwd: passwordPrompt(), customData: { employeeId: 12345 }, roles: [ { role: 'readWrite', db: 'products' } ] } )
El usuario contiene un campo customData de { employeeId: 12345 }.
Para recuperar el usuario pero omitir los datos personalizados de la salida, ejecute usersInfo con showCustomData establecido en false:
db.getSiblingDB("products").runCommand ( { usersInfo: "accountAdmin01", showCustomData: false } )
Ejemplo de salida:
{ users: [ { _id: 'products.accountAdmin01', userId: UUID("0955afc1-303c-4683-a029-8e17dd5501f4"), user: 'accountAdmin01', db: 'products', roles: [ { role: 'readWrite', db: 'products' } ], mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ] } ], ok: 1 }