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 cuales devolver información. El argumento |
| booleano | Opcional. Establezca en De forma predeterminada, este campo es |
| booleano | Opcional. Establezca en De forma predeterminada, este campo es Nuevo en la versión 5.2. |
| booleano | Opcional. Establézcalo en De forma predeterminada, este campo es Si está visualizando todos los usuarios, no puede especificar este campo. |
| booleano | Opcional. Establezca en De forma predeterminada, este campo es Si está visualizando todos los usuarios, no puede especificar este campo. |
| Documento | Opcional. Un documento que especifica las condiciones de la etapa para devolver información de los usuarios que coinciden con las condiciones del |
| 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 donde se ejecuta el comando.
|
| Devuelve 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 especificado 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 tener privilegios que incluyan la viewUser acción en la base de datos del otro usuario.
Salida
puede devolver la siguiente información según las opciones usersInfo 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 existente en la base de datos actual, puede especificarlo solo por su nombre. Por ejemplo, si está en la home base de datos y existe un usuario llamado "Kari" en la home base de datos, puede 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, puede especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Ver todos los usuarios de una base de datos que coinciden 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, utilice un documento de comando similar al siguiente:
db.runCommand( { usersInfo: 1, filter: { roles: { role: "root", db: "admin" } } } )
Al ver todos los usuarios, puede especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Ver todos los usuarios con SCRAM-SHA-1 credenciales
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 con SCRAM-SHA-1 credenciales. En concreto, el comando devuelve todos los usuarios de todas las bases de datos y, a continuación, utiliza la etapa para aplicarles el filtro $match especificado.
db.runCommand( { usersInfo: { forAllDBs: true}, filter: { mechanisms: "SCRAM-SHA-1" } } )
Al ver todos los usuarios, puede especificar la opción showCredentials pero no las opciones showPrivileges o showAuthenticationRestrictions.
Omitir datos personalizados de la salida
Nuevo en la 5.2 versión: Para omitir los datos personalizados de los usuarios de la salida, configure usersInfo la showCustomData opción false en.
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 false en:
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 }