Cómo instalar y proteger MongoDB en Ubuntu 24.04
MongoDB es un sistema de base de datos NoSQL (no SQL o no relacional) de código abierto, multiplataforma y distribuido. En lugar de almacenar datos en tablas como las bases de datos SQL tradicionales, MongoDB utiliza documentos flexibles para almacenar diversas formas de datos. MongoDB utiliza el formato binario JSON, BSON, para almacenar datos.
MongoDB es una base de datos NoSQL distribuida con alta disponibilidad integrada, conmutación automática por error y redundancia de datos, y escalado horizontal mediante fragmentación en clústeres distribuidos. Admite el despliegue geográfico multirregión y proporciona una API de consulta que admite operaciones CRUD (lectura y escritura), canalización de agregación de datos, búsqueda de texto y consultas geoespaciales.
En esta guía, te mostraremos cómo instalar MongoDB en un servidor Ubuntu 24.04. Prepararás tu servidor Ubuntu, añadirás el repositorio de MongoDB, instalarás el servidor MongoDB, crearás un administrador para MongoDB y, a continuación, habilitarás la autenticación de MongoDB. Por último, aprenderás a crear un usuario y una base de datos en MongoDB utilizando la shell ‘mongosh’.
Requisitos previos
Antes de empezar, asegúrate de que tienes lo siguiente
- Un servidor Ubuntu 24.04
- Un usuario no root con privilegios de administrador
Preparación del sistema
Antes de instalar MongoDB en tu sistema Ubuntu, asegúrate de que has configurado tu sistema. En este caso, configurarás el servidor Ubuntu con lo siguiente:
- Desactivar Transparent Huge Pages mediante systemd
- Aumentar los límites para el usuario por defecto de MongoDB ‘mongod
- Configurar max fs.file-max y habilitar swappiness a través del archivo‘/etc/systctl.conf
Desactivar Páginas Transparentes Enormes (THP)
Para desactivar THP en tu sistema, crearás un nuevo archivo de servicio systemd que se ejecutará automáticamente en cada arranque o inicio.
Crea un nuevo archivo de servicio ‘/etc/systemd/system/disable-thp.service‘ con el editor ‘nano’.
sudo nano /etc/systemd/system/disable-thp.service
Introduce la siguiente configuración para desactivar THP mediante el servicio.
[Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘systemctl‘ para recargar el gestor systemd, iniciar y habilitar el servicio‘disable-thp‘. Con esto, THP se desactivará al iniciar el sistema.
sudo systemctl daemon-reload sudo systemctl enable --now disable-thp.service
Configurar los límites
Después de deshabilitar THP, necesitas aumentar el máximo predeterminado de archivos y procesos para el usuario ‘mongod’ a al menos‘64000‘.
Crea un nuevo archivo‘/etc/security/limits.d/mongodb.conf‘ con el siguiente comando editor ‘nano’.
sudo nano /etc/security/limits.d/mongodb.conf
Inserta la siguiente configuración para aumentar el máximo de archivos abiertos y procesos a‘64000‘.
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
Guarda el archivo y sal del editor.
Configurar swappiness y fs.file-max
Por último, tendrás que aumentar el valor por defectode ‘fs.file-max‘ y habilitar el intercambio para MongoDB. Para ello, deberás editar el archivo‘/etc/sysctl.conf‘.
Abre el archivo‘/etc/sysctl.conf‘ con el comando editor ‘nano’.
sudo nano /etc/sysctl.conf
Introduce la siguiente configuración para establecer fs.file-max y habilitar el intercambio.
fs.file-max = 2097152 vm.max_map_count = 262144 vm.swappiness = 1
Cuando hayas terminado, guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘sysctl‘ para aplicar los cambios sin reiniciar.
sudo sysctl -p
Instalar MongoDB con el gestor de paquetes APT
Ahora que has configurado tu sistema Ubuntu, estás listo para instalar MongoDB. En esta sección, instalarás la última versión de MongoDB 8.0 desde el repositorio oficial de MongoDB.
En primer lugar, ejecuta el siguiente comando‘apt‘ para actualizar el índice de paquetes de Ubuntu e instalar los paquetes‘gnupg‘ y‘curl‘. Introduce‘Y’ para confirmar la instalación.
sudo apt update && sudo apt install gnupg curl
Ahora ejecuta el siguiente comando para añadir la clave GPG y el repositorio para MongoDB. En este ejemplo, instalarás MongoDB 8 en tu servidor Ubuntu 24.04.
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \ --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
A continuación, ejecuta el siguiente comando‘apt‘ para actualizar tu índice de paquetes e instalar el paquete‘mongodb-org‘ en tu sistema. Introduce‘Y’ para proceder con la instalación.
sudo apt update && sudo apt install mongodb-org
Una vez finalizada la instalación, ejecuta el siguiente comando«systemctl» para recargar el gestor systemd. El servicio«mongod» se añadirá a tu sistema Ubuntu.
sudo systemctl daemon-reload
Por último, ejecuta el siguiente comando para iniciar, habilitar y verificar el servicio‘mongod‘ de MongoDB. Verás que MongoDB se está ejecutando en tu sistema.
sudo systemctl enable --now mongod sudo systemctl status mongod
Asegurar el servidor MongoDB
Tras instalar MongoDB, deberás asegurar la instalación del servidor MongoDB con lo siguiente:
- Creando un nuevo usuario administrador para MongoDB utilizando el intérprete de comandos‘mongosh
- Habilitar la autenticación de MongoDB editando el archivo de configuración‘/etc/mongod.conf
Crear el usuario administrador de MongoDB
En esta sección, crearás un nuevo usuario administrador de MongoDB mediante la shell ‘mongosh’. La shell ‘mongosh’ es una línea de comandos cliente para interactuar con el servidor MongoDB, es como ‘mysql’ para MySQL/MariaDB y ‘psql’ para PostgreSQL.
Para crear un usuario administrador, inicia sesión en el servidor MongoDB con el siguiente comando de shell‘mongosh‘.
mongosh
Ahora ejecuta la siguiente consulta para desactivar la telemetría de MongoDB.
disableTelemetry()
A continuación, ve a la base de datos‘admin‘ y ejecuta las siguientes consultas para crear un nuevo usuario administrador para MongoDB. En este ejemplo, crearás un nuevo usuario‘myAdmin‘, e introduce tu nueva contraseña cuando se te solicite.
use admin
db.createUser( { user: "myAdmin", pwd: passwordPrompt(), roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Ahora escribe‘quit()‘ para salir del intérprete de comandos de MongoDB.
Activar la autenticación de MongoDB
Ahora que has creado un usuario administrador de MongoDB, estás listo para habilitar la autenticación de MongoDB a través del archivo‘/etc/mongod.conf‘.
Abre la configuración por defecto del servidor MongoDB‘/etc/mongod.conf‘ con el siguiente comando del editor ‘nano ‘.
sudo nano /etc/mongod.conf
Añade las siguientes líneas para habilitar la autenticación en MongoDB.
security: authorization: enabled
Cuando hayas terminado, guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘systemctl‘ para reiniciar el servidor MongoDB y aplicar tus cambios. Con esto, la autenticación de MongoDB estará habilitada.
sudo systemctl restart mongod
Probar la autenticación de MongoDB
Ahora que has asegurado la instalación del servidor MongoDB, vamos a verificar tu configuración iniciando sesión en MongoDB con el intérprete de comandos ‘mongosh’ y el nuevo usuario y contraseña admin.
Accede al servidor MongoDB como usuario‘miAdmin‘ con el comando‘mongosh‘ que aparece a continuación. Introduce tu contraseña cuando se te solicite.
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myAdmin" -p
Una vez conectado, ejecuta la siguiente consulta para comprobar el estado de tu conexión. Deberías haber iniciado sesión en el servidor MongoDB con el usuario‘myAdmin‘.
db.runCommand({connectionStatus : 1})
Ahora escribe‘quit()‘ para salir del servidor MongoDB.
Crear una base de datos y un usuario en MongoDB
En esta sección, aprenderás a crear una nueva base de datos y un nuevo usuario en MongoDB utilizando el shell ‘mongosh’. Para ello, asegúrate de que has iniciado sesión en MongoDB como usuario administrador.
Primero, ejecuta la consulta siguiente para moverte a la base de datos‘mydb‘.
use mydb
Ahora ejecuta la siguiente consulta para crear un nuevo usuario‘myUser‘ y permitir el acceso de lectura y escritura a la base de datos‘mydb‘. Introduce tu contraseña cuando se te pida.
db.createUser( { user: "myUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "mydb" }, { role: "read", db: "reporting" } ] } )
Escribe‘quit()‘ para salir del servidor MongoDB.
Ahora ejecuta el comando ‘mongosh’ que aparece a continuación para acceder como‘miUsuario‘ a la base de datos‘mydb‘. Introduce tu contraseña cuando se te solicite.
mongosh --port 27017 --authenticationDatabase \ "mydb" -u "myUser" -p
Una vez conectado, comprueba el estado de tu conexión utilizando la siguiente consulta.
db.runCommand({connectionStatus : 1})
Puedes ver a continuación que te has conectado al servidor MongoDB con el usuario ‘miUsuario’ y privilegios a la base de datos‘mydb‘.
Conclusión
¡Enhorabuena! Has completado la instalación del servidor MongoDB en el servidor Ubuntu 24.04. También has creado un usuario administrador y asegurado la instalación de MongoDB. Además, has aprendido a utilizar ‘mongosh’ para conectarte al servidor MongoDB y a realizar consultas básicas para gestionar usuarios y bases de datos en MongoDB.