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:

See the gist on github.

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:

See the gist on github.

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.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

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

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

5 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

5 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

7 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.