En esta entrada veremos cómo instalar MongoDB en Ubuntu Server 20.04 LTS Focal Fossa paso a paso, (es válido también para Ubuntu Desktop) de modo que puedas trabajar con este motor de bases de datos NoSQL desde tu servidor o VPS Ubuntu.
Contenido
Antes de instalar MongoDB en Ubuntu 20.04 LTS
Si quieres seguir los pasos de esta guía de instalación de MongoDB en Ubuntu 20.04 LTS tan sólo tendrás que asegurarte de cumplir estos mínimos:
- Una máquina Ubuntu 20.04 LTS Focal Fossa actualizada.
- Un usuario con privilegios de sudo.
- Acceso a Internet.
En el momento de redactar este artículo la versión de MongoDB disponible en los repositorios de Ubuntu 20.04 es la 3.6.3, mientras que el repositorio oficial de MongoDB ofrece en estos momentos la versión 5.0. Puedes optar por una u otra.
Cómo configurar el repositorio de MongoDB en Ubuntu 20.04 LTS
Si prefieres instalar MongoDB 5.0 habrá que configurar el repositorio oficial de MongoDB para Ubuntu 20.04 LTS. Empezaremos instalando la clave pública para verificar las firmas de los paquetes del nuevo repositorio:
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -O- | sudo apt-key add -
Creamos el archivo de repositorio:
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list
Con la siguiente línea como contenido:
deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse
Guardamos el archivo y actualizamos las listas de paquetes:
~$ sudo apt update
Cómo instalar MongoDB en Ubuntu 20.04 LTS
Vamos a instalar MongoDB en Ubuntu 20.04 LTS desde el repositorio oficial, para lo que instalamos el paquete mongodb-org-server:
~$ sudo apt install mongodb-org-server
Tras la descarga e instalación de este paquete se crea un nuevo servicio en el sistema, el servicio mongod.service o simplemente mongod. MongoDB no queda en ejecución ni está habilitado para iniciar automáticamente, por lo que debemos hacer estas tareas manualmente.
Iniciamos el servicio por primera vez con el comando systemctl:
~$ sudo systemctl start mongod
El servicio quedará en ejecución, listo para aceptar conexiones, como podremos comprobar con el comando systemctl status mongod
:
Para que MongoDB inicie automáticamente con cada arranque de Ubuntu 20.04, habilitaremos el servicio mongod:
~$ sudo systemctl enable mongod
Cómo instalar el cliente de MongoDB para Ubuntu 20.04 LTS
Hasta ahora sólo hemos instalado el servicio, pero seguramente querrás también instalar el cliente de MongoDB para Ubuntu 20.04 LTS, de modo que puedas conectar con el servicio desde consola.
Aunque no se recomienda, todavía puedes instalar el viejo cliente de consola mongo con el paquete mongodb-org-shell:
~$ sudo apt install -y mongodb-org-shell
Pero este cliente dejará usarse en próximos lanzamientos, por lo que se recomienda usar en su lugar el cliente mongosh que podemos instalar (y usar) igual de fácil:
~$ sudo apt install -y mongodb-mongosh
Una vez descargado es instalado el paquete, dispondremos del cliente de consola mongosh.
Cómo conectar al servicio MongoDB en Ubuntu 20.04 LTS
Una vez instalado el servicio y el cliente, conectar a MongoDB en Ubuntu 20.04 LTS es tan sencillo como lanzar en consola el comando mongosh:
~$ mongosh Current Mongosh Log ID: 625ed0f59033df8ea3a17781 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1 Using MongoDB: 5.0.7 Using Mongosh: 1.3.1 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting: ###: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem ###: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted ------ test>
Obtenemos bastante información y avisos en pantalla.
Parte de estos avisos nos informan sobre la existencia de un servicio anónimo de telemetría que podremos desactivar mediante el comando disableTelemetry():
> disableTelemetry()
Ahora podemos salir del cliente:
> exit
Y al volver a conectar obtendremos menos avisos:
Cómo configurar MongoDB en Ubuntu 20.04 LTS
Vamos a configurar MongoDB en Ubuntu 20.04 LTS teniendo en cuenta que su archivo de configuración principal está ubicado en la ruta /etc/mongod.conf. Cualquier ajuste en la configuración de MongoDB requerirá reiniciar el servicio mongod:
~$ sudo systemctl restart mongod
Cómo habilitar el uso de contraseñas en MongoDB
Uno de los avisos al conectar al servicio MongoDB nos informa de que no está activado el control de acceso, por lo que no existen restricciones para las operaciones de acceso, lectura y escritura de datos.
Para cambiar esto editaremos mongod.conf:
~$ sudo nano /etc/mongod.conf
Y buscaremos la directiva security:
... #security: ...
Podemos apreciar que está desactivada, así que la activaremos y especificaremos el tipo de seguridad:
... security: authorization: enabled ...
Para realizar el sangrado o indentación, no uses tabulaciones, sino espacios en blanco.
No uses tabulaciones en el archivo mongod.conf, sólo está permitido el uso de espacios en blanco para indentar o sangrar el texto de la configuración.
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Si volvemos a conectar al servicio, veremos que ya no se emiten avisos sobre control de acceso:
Ahora necesitamos un usuario administrador con contraseña, por lo que activaremos la base de datos admin:
> use admin
Y creamos el nuevo usuario administrador con contraseña:
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Salimos del cliente mongosh:
> exit
Al existir ya un usuario administrador no podremos conectar de forma anónima y realizar acciones privilegiadas, como la que acabamos de hacer.
Volvemos a conectar, pero esta vez especificando el nuevo usuario:
~$ mongosh -u chacho Enter password: ******** ... ----- >
Se nos solicitará la contraseña antes de establecer la conexión.
Acceso remoto a MongoDB en Ubuntu 20.04 LTS
Por defecto MongoDB sólo atiende peticiones locales, desde la propia máquina Ubuntu 20.04 en la que está instalado el servicio. Si queremos permitir conexiones remotas a MongoDB tendremos que editar mongod.conf:
~$ sudo nano /etc/mongod.conf
Y buscaremos este bloque de configuración:
... # network interfaces net: port: 27017 bindIp: 127.0.0.1 ...
Podemos cambiar el valor de la directiva bindIp o desactivarla y añadir otra con el valor adecuado:
... # network interfaces net: port: 27017 # bindIp: 127.0.0.1 bindIp: 0.0.0.0 ...
Recuerda usar únicamente espacios en blanco (nada de tabulaciones).
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Cómo configurar el firewall UFW de Ubuntu 20.04 para MongoDB
Si tienes activado el firewall UFW en Ubuntu 20.04 será necesario añadir una regla para permitir conexiones entrantes a MongoDB, especificando el puerto de conexión que por defecto es el 27017:
~$ sudo ufw allow 27017/tcp
Cómo acceder remotamente a MongoDB
Desde otra máquina con un cliente de MongoDB, por ejemplo otra máquina que disponga del cliente mongosh, especificaremos la dirección IP o nombre DNS del servidor Ubuntu 20.04 y el usuario de MongoDB con el que queremos conectar:
~$ mongosh --host ubuntu2004.local.lan -u chacho
Se nos solicitará la contraseña y tras autenticarnos podremos trabajar como si lo hiciéramos localmente.
Conclusión
Ahora que sabes cómo instalar MongoDB en Ubuntu 20.04 LTS Focal Fossa ya puedes empezar a desarrollar tus propias bases de datos NoSQL, o preparar el soporte de otras aplicaciones que las utilizan.
Si tienes dudas, preguntas, sugerencias de mejoras o actualizaciones de este artículo, o quieres notificar algún error, puedes dejar tu comentario y lo responderemos tan pronto como sea posible.
¡Apoya comoinstalar.me!
¿Ya tienes listo este motor de bases de datos gracias a nuestra pequeña guía de instalación y configuración? En ese caso si quieres agradecérmelo puedes hacerlo dejando un 1 $ de propina en PayPal:
O si te sientes especialmente generoso, puedes invitarme a un café:
¡Gracias!
¡Excelente la explicación, muchas gracias por el aporte!
Saludos.
¡Gracias, Miguel! Es estupendo saber que te ha servido.
Actualizado a la versión 5.0.7.
Actualizado a la versión 5.0.6.
Me da error en el paso de security.
No das mucha información para ayudarte a resolver el problema. Comprueba que has tecleado correctamente las opciones de configuración y que has usado espacios en blanco en lugar de tabulaciones.
El mejor tutorial que me he encontrado en Internet. Muchas gracias por tu trabajo.
¡Gracias a ti, Jose, por tu comentario!
¡¡¡Gracias!!! Me sirvió de mucho.
¡Me alegra saberlo, Laura!
Compadre, besto tutorial. ¡Abarcaste todo lo que quería saber sobre MongoDB aquí!
Gracias, «Persona Anónima» xD