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

sistema de configuración

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

instalar 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

instalar mongodb

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

instalar mongodb

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

comprobar servicio mongodb

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()

iniciar sesión en mongodb

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.

crear admin

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

iniciar sesión en mongodb

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.

comprueba la conexión

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.

crear base de datos y usuario

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

iniciar sesión como nuevo usuario

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‘.

comprueba la conexión

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.

También te podría gustar...