3

Activar autenticación en MongoDB

Eduardo
eperedo
52274

Al realizar la instalación de MongoDB este se instala por defecto sin un usuario/contraseña, esto facilita mucho el primer uso ya que rápidamente se pueden crear base de datos, colecciones y documentos sin ninguna restricción.

Es por eso que al ingresar al shell de mongo nos aparece el siguiente mensaje:

WARNING: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted.

La desventaja de esta instalación es que no podemos probar la creación de usuarios y roles. Vamos a ver cómo podemos activar la autenticación en nuestra instalación de MongoDB.

🐳 Creando un usuario administrador mediante docker

Si seguiste mi tutorial de como instalar MongoDB usando docker puedes crear el usuario administrador al ejecutar el comando run con las variables de entorno MONGO_INITDB_ROOT_USERNAME y MONGO_INITDB_ROOT_PASSWORD.

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=1234 --name mongo mongo:4.2

Ahora si nos conectamos al shell de mongo podemos notar que el mensaje que advertía que la base de datos no tenía autenticación ya no aparece.

💻 Creando un usuario administrador sin docker

Si no instalaste MongoDB usando docker vamos a tener que realizar algunos pasos adicionales. Lo primero que necesitamos es crear un usuario de tipo administrador en la base de datos admin que ya viene por defecto en MongoDB. Usaremos el método createUser para esto:

use admin
db.createUser(
  {
    user:"root",
    pwd:"123456",
    roles: [
      {
        role:"userAdminAnyDatabase",
        db:"admin"
      },
      "readWriteAnyDatabase"
    ]
  }
)

Según el código anterior voy a crear un usuario de nombre root con la contraseña 123456 y le estoy asignando un role especial que ya viene configurado en MongoDB llamado userAdminAnyDatabase que basicamente le da acceso al usuario a todas las base de datos.

⚠️ Para un entorno real usar un usuario y contraseña más segura.

Ahora debemos reiniciar MongoDB, para esto dentro del mismo shell podemos ejecutar

db.adminCommand({ shutdown: 1 });

Salir del shell usando exit y volviendo a ejecutar mongod, pero esta vez usando el flag –auth.

mongod--auth--port27017--dbpath/data/db

Ahora podemos probar nuestro usuario root creado anteriormente.

mongo --port 27017 --authenticationDatabase "admin" -u "root" -p123456

Y listo ya tenemos activada la autenticacion en nuestra base de datos MongoDB. Ahora ya puedes probar la creación de usuarios y roles para darle a tus base de datos un acceso totalmente personalizado a tus gustos, si deseas aprender más sobre esto puedes revisar mi otro tutorial donde hable sobre creación de usuarios.

Escribe tu comentario
+ 2
1

Hola. tengo una duda. Me funcionó la activación de autenticación, pero esta desaparece cuando apago la base de datos(mongod) en windows. Intenté modificar el archivo mongod.cfg pero no me funciona. Hay alguna manera de colocarle autenticación a la base de datos de manera definitiva?