Mongo DB

Habilitar autenticación y crear administrador en MongoDB

Por defecto, si instalamos el motor de base de datos de MongoDB, no hay seguridad. Es decir, cualquiera puede entrar y hacer lo que se le antoje, pues no hay permisos ni usuarios. Por eso es que hoy veremos:

  • Cómo habilitar la seguridad en MongoDB
  • Cómo crear un usuario administrador

De esta manera tendremos nuestra base de datos asegurada, o bueno, al menos tendremos roles y permisos para que no cualquiera se pueda loguear.

En otras palabras, en este post trato de explicar cómo asegurar nuestra instalación de MongoDB creando nuestro usuario administrador.

Requisitos

Obviamente debes tener el motor de MongoDB. Si usas Windows, este es tu tutorial.

Crear usuario administrador

Como la primera vez no hay roles, podemos loguearnos sin que nos pida credenciales. Ve a una terminal y ejecuta la shell de mongo con:

mongo

Una vez logueado, escribe lo siguiente para cambiar a la base de datos admin:

use admin

Cuando se muestre el mensaje de switched to db admin entonces es hora de crear el usuario administrador llamando a la función db.createUser y pasándole el usuario; el cual tiene este formato:

db.createUser({
    user: "parzibyte",
    pwd: "hunter2",
    roles: [
        {
            role: "userAdminAnyDatabase",
            db: "admin"
        },
        "readWriteAnyDatabase"
    ],
});

Lo que no debes cambiar son los roles; o bueno, cámbialos si sabes cómo funcionan, ya que esos que pongo son los necesarios para que se haga un usuario administrador.

Obviamente cambia la contraseña y el usuario, no vayas a dejarlo así como en el ejemplo. Y por favor, elige una contraseña segura y difícil de adivinar o romper por fuerza bruta.

Habilitar seguridad o autenticación en archivo de configuración

Primero creamos el usuario, y luego habilitamos la seguridad o autenticación. Si lo hiciéramos al revés, entonces se pondría la autenticación y no habría usuario con el que loguearse.

Pero bueno, ahora vamos a habilitar la autenticación, así que busca el archivo de configuración que se encuentra la mayoría de veces junto al ejecutable de MongoDB; si seguiste el tutorial que puse anteriormente esto no debería complicarse. Si no, entonces lee la documentación dependiendo de tu sistema operativo.

El archivo se llama mongod.cfg.

En mi caso, se encuentra en C:\Program Files\MongoDB\Server\4.0\bin. Ahora lo abrimos con un editor de texto plano, ejecutado como administrador.

Una vez abierto, busca un comentario que diga #security y añade:

security:
  authorization: enabled

El mío queda así:

Habilitar autenticación en archivo de configuración de MongoDB

Guarda cambios y ya casi terminamos.

Reiniciar servidor de MongoDB

Ahora puedes reiniciar el servidor. Si estás en Windows, la manera más amigable es ir a servicios, buscar el de MongoDB, hacer click en Detener y luego en Iniciar.

Iniciar sesión, con autenticación

Si ejecutas mongo de nuevo, te permitirá entrar pero al ejecutar show databases (por ejemplo) te dirá que no estás autorizado.

Muy bien, entonces ya podemos loguearnos. Existen dos formas.

Autenticarse al ejecutar mongo

Puedes ejecutar mongo y pasarle algunos argumentos, así:

mongo -u "usuario" -p "contraseña" --authenticationDatabase "admin"

Cambia tu usuario y contraseña, deja la base de datos intacta, pues ahí nos dimos de alta cuando creamos el usuario. Si todo es correcto, te dejará pasar y ejecutar comandos:

Autenticarse al ejecutar mongo

Iniciar mongo y luego autenticarse

Igualmente puedes ejecutar mongo,  y una vez logueado poner use admin para cambiar a la base de datos a admin, para más tarde ejecutar:

db.auth("usuario", "contraseña");

Así:

Autenticarse después de entrar a mongo

Conclusiones y referencias

Si quieres saber de dónde me basé, aquí está el link. Más tarde puedes hacer otras llamadas a db.createUser y darle roles que ya vienen incluidos por defecto, o crear los tuyos.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Hola, ayer inicie con normalidad, pero ahora me sale el sgte. error :
    > mongo --port 27017 -u "superAdmin" -p "pass1234" --authenticationDatabase "admin"
    2020-03-23T09:56:18.376-0500 E QUERY [js] uncaught exception: SyntaxError: unexpected token: identifier :
    @(shell):1:8

    que podria ser ? gracias

  • Que tal estoy siguiendo este tutorial para habilitar la autenticacion de usuarios, todo esta bien hasta el momento en que toca reiniciar el servicio de MongoDB, cuado lo detengo y vuelvo a iniciar me marca un error, y ya no se puede iniciar el servicio, posteriormente cuando ejecuto mongod.exe y mongo.exe, al ejecutar "show dbs", las bases de datos que tenia desaparecen, si reinstalo MongoDB todo se restaura y las bases que tenia vuelven a aparecer. Vuelvo a intentar hacer la autenticación, pero esta vez en lugar de "Detener" e "Iniciar" el servicio, doy clic en "Reiniciar" y ocurre lo mismo que describi.

    ¿Hay otra forma de hacer esto? o ¿Como podria solucionarlo?

    Gracias

    • Tal vez son permisos del sistema o te estás saltando alguna parte del tutorial. ¿Qué error específicamente marca? trata de ejecutarlo como administrador o de poner la carpeta de datos en un lugar no protegido

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.