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

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.