Listar todos los usuarios en Mongo Shell
- Autenticar un usuario
- Listar todos los usuarios en Mongo Shell
-
Método
db.getUser()
en MongoDB -
Método
db.getUsers()
en MongoDB
En este artículo de MongoDB, aprenderá cómo autenticar a un usuario, enumerar todos los usuarios en el shell de Mongo y utilizar los métodos db.getUser()
y db getUsers()
.
Autenticar un usuario
Para autenticarse como usuario, el usuario debe proporcionar un nombre de usuario, una contraseña y la base de datos de autenticación asociada con ese usuario. Por lo tanto, es imposible cambiar entre usuarios en la misma sesión mongosh
.
Autenticarse como un usuario diferente significa que la sesión tiene los privilegios de ambos usuarios autenticados. Puede salir y reiniciar mongosh
para cambiar entre los usuarios.
Con mongosh
, puede autenticarse durante la conexión o autenticarse después de la conexión.
Autenticar durante la conexión
Inicie mongosh
con las opciones de línea de comandos -u
, -p
y --authenticationDatabase
.
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myUserAdmin" -p
Introduzca su contraseña cuando se le solicite.
Autenticar después de la conexión
El uso de mongosh
se conecta a la instancia mongod
o mongos
.
mongosh --port 27017
En mongosh
, cambie a la base de datos de autenticación (en este caso, admin
) y utilice el método db.auth(,)
o el comando authenticate
para autenticarse en la base de datos de autenticación.
use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
El método passwordPrompt()
solicita al usuario que introduzca la contraseña. El usuario también puede especificar su contraseña directamente como una cadena.
Se recomienda utilizar el método passwordPrompt()
para evitar que la contraseña sea visible en su pantalla y potencialmente filtrar la contraseña a su historial de shell. En su lugar, ingrese la contraseña cuando se le solicite.
Listar todos los usuarios en Mongo Shell
Para enumerar todos los usuarios, puede usar mongosh
para consultar la colección system.users
.
use admin
db.system.users.find()
No debe modificar la colección system.users
directamente. Para administrar los usuarios, puede utilizar los comandos de administración de usuarios designados.
Por ejemplo, para enumerar todos los usuarios de un clúster fragmentado creado a través de un mongos
, conéctese a un mongos
y ejecute el siguiente comando. MongoDB almacena los usuarios creados a través de un mongos
en la base de datos admin
de los servidores de configuración.
Para enumerar todos los fragmentos, los usuarios locales pueden conectarse directamente al fragmento respectivo y ejecutar el siguiente comando. MongoDB se utiliza para almacenar usuarios locales de fragmentos
en la base de datos admin
del propio fragmento.
Estos usuarios locales fragmentados
son independientes de los agregados al clúster fragmentado a través de un mongos
. Los usuarios de fragmento local
están restringidos al fragmento y no están disponibles para mongos
.
Método db.getUser()
en MongoDB
Este método tiene la siguiente sintaxis.
db.getUser(username, args)
Este método devolverá la información de usuario para un usuario específico. El usuario puede ejecutar este método en la base de datos del usuario.
Debe existir en la base de datos en la que se ejecuta el método. El método db.getUser()
consta de los siguientes parámetros.
db.getUser( "<username>", {
showCredentials: <Boolean>,
showPrivileges: <Boolean>,
showAuthenticationRestrictions: <Boolean>,
filter: <document>
} )
Parámetro | Tipo | Descripción |
---|---|---|
username |
cadena | El nombre del usuario para el que se recuperará la información. |
args |
documento | Opcional. Un documento que especifica argumentos adicionales. |
El documento args
admite los siguientes campos.
Campo | Tipo | Descripción |
---|---|---|
showCredentials |
booleano | Este campo es opcional. Establezca este campo en true para mostrar el hash de la contraseña del usuario. Por defecto, este campo es false . |
showPrivileges |
booleano | Este campo es opcional. Establezca este campo en true para ver los privilegios completos del usuario, incluida la información ampliada. Por defecto, este campo es false . Si ve todos los usuarios, no puede especificar este campo. |
showAuthenticationRestrictions |
booleano | Este campo es opcional. Establezca este campo en true para mostrar las restricciones de autenticación del usuario. Por defecto, este campo es false . Si ve todos los usuarios, no puede especificar este campo. |
filter |
documento | Este campo es opcional. Este documento especifica las condiciones de la etapa $match para devolver información para los usuarios que coincida con las condiciones del filtro. |
El método db.getUser()
está incluido en el comando usersInfo
.
El usuario debe tener la acción viewUser
en la base de datos del otro usuario para ver la información de otro usuario. Los usuarios tienen acceso a sus datos.
Ejemplo:
Las siguientes operaciones devolverán información sobre un ejemplo de usuario appClient
en una base de datos de cuentas
.
use accounts
db.getUser("appClient")
El resultado del ejemplo anterior se muestra a continuación.
{
_id: 'accounts.appClient',
userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
user: 'appClient',
db: 'accounts',
roles: [],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
Método db.getUsers()
en MongoDB
Este método tiene la siguiente sintaxis.
db.getUsers(<options>)
Este método devolverá la información de todos los usuarios de la base de datos. El método db.getUsers()
está incluido en el comando usersInfo: 1
.
El método db.getUsers()
toma las siguientes opciones.
db.getUsers( {
showCredentials: <Boolean>,
filter: <document>
} )
Campo | Tipo | Descripción |
---|---|---|
showCredentials |
booleano | Este campo es opcional. Puede establecer el campo en true para mostrar el hash de la contraseña del usuario. Por defecto, este campo es false . |
filter |
documento | Este campo es opcional. Este documento especifica las condiciones de la etapa $match para devolver información para los usuarios que coinciden con las condiciones del filtro. |
El usuario debe tener la acción viewUser
en la base de datos del otro usuario para ver la información de otro usuario. Los usuarios pueden ver su información.
Ejemplo:
Ver todos los usuarios de una base de datos determinada que coincida con el filtro especificado.
El método db.getUsers()
puede aceptar un documento de filtro
para devolver información para los usuarios que coincida con la condición del filtro. Para ver todos los usuarios de la base de datos actual que tienen credenciales SCRAM-SHA-256
.
db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })
Mientras visualiza todos los usuarios, puede especificar la opción showCredentials
, pero no la opción showPrivileges
o showAuthenticationRestrictions
.
Entonces, con la ayuda de este artículo de MongoDB, aprendió cómo autenticar a un usuario, enumerar todos los usuarios en el shell de Mongo y usar los métodos db.getUser()
y db.getUsers()
.