Cómo instalar MongoDB en Debian 12
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, y admite el despliegue geográfico multirregional. MongoDB también 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 este tutorial, aprenderás a instalar MongoDB en un servidor Debian 12. También aprenderás a activar la autenticación MongoDB, a utilizar el cliente MongoDB ‘mongosh’ y a utilizar consultas básicas para crear un nuevo usuario y una nueva base de datos en MongoDB.
Requisitos previos
Para empezar con este tutorial, asegúrate de que tienes lo siguiente:
- Un servidor Debian 12
- Un usuario no root con privilegios de administrador
Preparación del servidor Debian
Antes de instalar MongoDB en tu servidor Debian, se recomienda aplicar las siguientes configuraciones:
- Desactiva las páginas gigantes transparentes (THP) mediante el script systemd
- Aumenta los límites por defecto para el usuario MongoDB
- Activa el intercambio y aumenta la memoria max_mmap mediante el archivo‘/etc/sysctl.conf
Ahora vamos a configurar el servidor Debian.
En primer lugar, ejecuta el siguiente comando‘nano’ para crear un nuevo archivo de servicio /etc/systemd/system/disable-thp.service.
sudo nano /etc/systemd/system/disable-thp.service
Pega el siguiente script de servicio para configurar‘transparent_hugepage’ a‘never’.
[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.
Ahora ejecuta el siguiente comando‘systemctl’ para recargar el gestor systemd. A continuación, inicia y activa el servicio‘disable-thp‘. Con esto, la‘transparent_hugepage‘ se desactivará en cada inicio del sistema.
sudo systemctl daemon-reload sudo systemctl enable --now disable-thp.service
A continuación, crea un nuevo archivo /etc/security/limits.d/mongodb.conf con el editor‘nano‘.
sudo nano /etc/security/limits.d/mongodb.conf
Introduce la siguiente configuración para establecer el proceso y el archivo de límites máximos en‘64000’ para el usuario‘mongod‘.
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
Cuando termines, guarda el archivo y sal.
Después, edita el archivo‘/etc/sysctl.conf‘ con lo siguiente.
sudo nano /etc/sysctl.conf
Inserta la configuración de abajo al final de la línea.
fs.file-max = 2097152 vm.max_map_count = 262144 vm.swappiness = 1
Guarda el archivo y sal.
Por último, ejecuta el comando‘sysctl’ que aparece a continuación para aplicar inmediatamente los cambios en el archivo‘/etc/sysctl.conf‘.
sudo sysctl -p
Instalar el servidor MongoDB en Debian
Ahora que ya has configurado tu servidor Debian, vamos a iniciar la instalación de MongoDB. En este caso, instalarás MongoDB 7.0 a través del repositorio oficial de MongoDB en tu servidor Debian.
Instala los paquetes‘gnupg‘ y‘curl‘ en tu sistema Debian con lo siguiente:
sudo apt install gnupg curl
Ahora añade la clave GPG de MongoDB y el repositorio para Debian con el siguiente comando. En este caso, configurarás un repositorio para MongoDB 7.0.
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \ --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
A continuación, ejecuta el comando«apt» que aparece a continuación para actualizar tu lista de paquetes e instalar el paquete «mongodb-org».
sudo apt update && sudo apt install mongodb-org -y
En la siguiente salida, puedes ver la instalación de MongoDB.
Una vez finalizada la instalación, recarga el gestor systemd con el comando «systemctl».
sudo systemctl daemon-reload
Inicia y habilita el servicio «mongod» y, a continuación, verifícalo para asegurarte de que el servicio se está ejecutando.
sudo systemctl enable --now mongod sudo systemctl status mongod
Si MongoDB se está ejecutando, verás una salida como la siguiente:
Asegurar el servidor MongoDB con autenticación
Con MongoDB instalado, necesitas asegurar tu instalación habilitando la autenticación de MongoDB. En esta sección, configurarás la autenticación de MongoDB y crearás un nuevo usuario administrador para MongoDB. Esto te mostrará cómo utilizar‘mongosh‘ o cliente MongoDB y las consultas básicas de MongoDB.
Accede al servidor MongoDB con el comando‘mongosh‘ que aparece a continuación. No hay contraseña para la instalación por defecto de MongoDB.
mongosh
Ejecuta el comando‘disableTelemetry()‘ para desactivar la recogida anónima de datos de MongoDB.
disableTelemetry()
Pasa a la base de datos‘admin’ con la consulta‘use‘.
use admin
Ahora ejecuta la siguiente consulta para crear un nuevo usuario‘myAdmin’ que se utilizará como administrador de tu servidor MongoDB. Introduce tu contraseña cuando se te pida.
db.createUser( { user: "myAdmin", pwd: passwordPrompt(), roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Escribe el comando‘quit()‘ para salir del servidor MongoDB.
quit()
A continuación, edita el archivo‘/etc/mongod.conf‘ con el editor‘nano‘.
sudo nano /etc/mongod.conf
Descomenta la opción‘security‘ y añade‘authorization: enabled‘ para activar la autenticación en MongoDB.
security: authorization: enabled
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘systemctl’ para reiniciar el servidor MongoDB y aplicar tus modificaciones.
sudo systemctl restart mongod
Probar la autenticación de MongoDB
Ahora que has creado un usuario administrador y activado la autenticación en tu servidor MongoDB. Vamos a verificar tu configuración iniciando sesión en el servidor MongoDB a través del usuario ‘myAdmin’.
Ejecuta el siguiente comando‘mongosh’ para iniciar sesión en el servidor MongoDB como usuario‘myAdmin‘ e introduce tu contraseña cuando se te solicite.
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myAdmin" -p
Tras iniciar sesión, ejecuta la siguiente consulta para comprobar el estado de la conexión con el servidor MongoDB.
db.runCommand({connectionStatus : 1})
Puedes ver a continuación que te has conectado como usuario‘miAdmin’ al servidor MongoDB.
Crear la primera base de datos y el primer usuario
En esta sección, crearás una nueva base de datos y un nuevo usuario que se utilizarán para tu aplicación a través del cliente MongoDB ‘mongosh’. Así que asegúrate de que estás en el entorno‘mongosh‘.
En primer lugar, ejecuta la consulta‘use‘ para crear y cambiar la base de datos de destino. En este ejemplo, crearás una nueva base de datos‘mydb‘. Tu prompt MongoDB cambiará a‘mydb‘.
use mydb
Ahora ejecuta la siguiente consulta para crear un nuevo usuario ‘myUser’ con privilegios para leer y escribir en la base de datos‘mydb‘. Introduce una nueva contraseña cuando se te pida.
use mydb db.createUser( { user: "myUser", pwd: passwordPrompt(), roles: [ { role: "readWrite", db: "mydb" }, { role: "read", db: "reporting" } ] } )
A continuación, ejecuta las siguientes consultas para cambiar la base de datos‘admin‘ y verifica la lista de usuarios de tu servidor MongoDB.
use admin db.system.users.find()
Deberías ver el usuario‘miAdmin‘ y‘miUsuario‘ creados como se muestra a continuación:
Ahora escribe‘quit()‘ para salir del servidor MongoDB.
Por último, inicia sesión en el servidor MongoDB como un nuevo usuario‘myUser’ en la base de datos‘mydb’ con el siguiente comando. Introduce tu contraseña cuando se te solicite.
mongosh --port 27017 -u "myUser" \ --authenticationDatabase "mydb" -p
Ejecuta la siguiente consulta para comprobar tu conexión actual
db.runCommand({connectionStatus : 1})
En la sección‘authInfo‘, puedes ver que te has autenticado como usuario‘myUser‘ y base de datos‘mydb‘.
Conclusión
¡Enhorabuena! Has completado la instalación de MongoDB 7.0 en un servidor Debian 12. También has aprendido a proteger el servidor MongoDB activando la autenticación y creando un nuevo usuario administrador para MongoDB. Por último, has aprendido a crear una nueva base de datos MongoDB y un nuevo usuario para tus aplicaciones.