Overview
Los usuarios con los privilegios adecuados pueden cambiar sus propias contraseñas y datos personalizados. Custom data almacena información opcional del usuario.
Considerations
Para generar una contraseña segura que se pueda utilizar en este procedimiento, utiliza el comando rand de la utilidad openssl. Por ejemplo, ejecuta openssl
rand con las siguientes opciones para crear una cadena codificada en base64 de 48 bytes pseudoaleatorios:
openssl rand -base64 48
Requisitos previos
Para modificar tu propia contraseña y tus datos personalizados, debes tener privilegios que otorguen changeOwnPassword y changeOwnCustomData acciones respectivamente en la base de datos del usuario.
Conéctate como un usuario con privilegios para gestionar usuarios y roles.
Conéctate al mongod o al mongos con privilegios para gestionar usuarios y roles, como un usuario con el rol de userAdminAnyDatabase. El siguiente procedimiento utiliza la myUserAdmin creada en Habilitar el control de acceso en las implementaciones autogestionadas.
mongosh --port 27017 -u myUserAdmin -p --authenticationDatabase 'admin'
Si no especificas la contraseña para la opción de línea de comandos -p, mongosh solicita la contraseña.
Crea un rol con los privilegios adecuados.
En la base de datos de admin, create un nuevo rol con changeOwnPassword y changeOwnCustomData.
use admin db.createRole( { role: "changeOwnPasswordCustomDataRole", privileges: [ { resource: { db: "", collection: ""}, actions: [ "changeOwnPassword", "changeOwnCustomData" ] } ], roles: [] } )
Agregar un usuario con este rol.
En la base de datos test, create un nuevo usuario con el rol creado de "changeOwnPasswordCustomDataRole". Por ejemplo, la siguiente operación crea un usuario con tanto el rol incorporado readWrite como el "changeOwnPasswordCustomDataRole" creado por el usuario.
Tip
Puedes utilizar el método passwordPrompt() junto con varios métodos/comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada del método/comando. Sin embargo, todavía puedes especificar la contraseña directamente como lo harías con versiones anteriores del shell de mongo.
use test db.createUser( { user:"user123", pwd: passwordPrompt(), // or cleartext password roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ] } )
Para otorgar a un usuario existente el nuevo rol, use db.grantRolesToUser().
Procedimiento
Conéctese con los privilegios adecuados.
Conéctese a mongod o como un usuario con los privilegios mongos adecuados.
Por ejemplo, la siguiente operación se conecta a MongoDB como user123 creado en la sección Prerrequisitos.
mongosh --port 27017 -u user123 --authenticationDatabase 'test' -p
Si no especificas la contraseña para la opción de línea de comandos -p, mongosh solicita la contraseña.
Para comprobar que tienes los privilegios especificados en la sección Requisitos previos, así como para ver la información del usuario, utiliza el comando usersInfo con la opción showPrivileges.
Cambia tu contraseña y datos personalizados.
Usa el método db.updateUser() para actualizar la contraseña y los datos personalizados.
Por ejemplo, la siguiente operación cambia la contraseña del usuario a KNlZmiaNUp0B y los datos personalizados a { title: "Senior Manager" }:
Tip
Puedes utilizar el método passwordPrompt() junto con varios métodos/comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada del método/comando. Sin embargo, todavía puedes especificar la contraseña directamente como lo harías con versiones anteriores del shell de mongo.
use test db.updateUser( "user123", { pwd: passwordPrompt(), // or cleartext password customData: { title: "Senior Manager" } } )
Introduzca la contraseña cuando se lo pidan.