Cómo instalar MongoDB en Ubuntu (4 pasos)
MongoDB es una base de datos NoSQL y de código abierto que ofrece una base de datos empresarial de alto rendimiento, alta disponibilidad y escalamiento automático.
No podemos usar SQL (lenguaje de consulta estructurado) para crear, recuperar, actualizar y eliminar datos (CRUD), y no almacena datos en tablas como MySQL u Oracle. Los datos se almacenan en una estructura de «documento» en formato JSON (en MongoDB llamado BSON) que un registro es un documento.
En este artículo, explicaremos cómo instalar MongoDB, administrar su servicio y configurar la autenticación básica en Ubuntu 18.04.
Importante: Debe tener en cuenta que la empresa MongoDB Inc solo ofrece paquetes para versiones de Ubuntu LTS (soporte a largo plazo) de 64 bits, como 14.04 LTS (confiable), 16.04 LTS (xenial), 18.04 LTS (biónico), etc.
Paso 1) Instalar MongoDB en Ubuntu 18.04
Los repositorios de paquetes oficiales de Ubuntu vienen con la última versión de MongoDB, lo que significa que podemos instalar los paquetes necesarios usando apt-get
.
Primero, actualizamos la lista de paquetes para tener la versión más reciente de los listados del repositorio:
$ sudo apt-get update
instalaremos el paquete MongoDB que incluye varios otros paquetes como mongo-tools, mongodb-clients, mongodb-server y mongodb-server-core.
$ sudo apt-get install -y mongodb
Paso 2) Verificación del servicio y la base de datos de MongoDB
El servicio MongoDB se iniciará automáticamente a través de systemd y el proceso escuchará en el puerto. 27017
. Puede verificar su estado usando el comando systemctl como se muestra a continuación.
$ sudo systemctl status mongodb
output ● mongodb.service - An object/document-oriented database Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-08-06 13:16:20 UTC; 6min ago Docs: man:mongod(1) Main PID: 14415 (mongod) Tasks: 23 (limit: 1112) CGroup: /system.slice/mongodb.service └─14415 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf Aug 06 13:16:20 li34-72 systemd[1]: Started An object/document-oriented database.
También podemos verificar esta instalación conectándonos al servidor de la base de datos y ejecutando un comando de diagnóstico.
$ mongo --eval 'db.runCommand({ connectionStatus: 1 })'
output MongoDB shell version v3.6.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.3 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }
Como vemos un valor de 1
Para el ok
El campo en la respuesta indica que el servidor está funcionando correctamente.
Paso 3) Administrar el servicio MongoDB
La instalación de MongoDB viene como un servicio systemd y se puede administrar fácilmente a través de un estándar systemd
comandos como se muestra a continuación.
Para dejar de ejecutar el servicio MongoDB, ejecute el siguiente comando.
$ sudo systemctl stop mongodb
Para iniciar un servicio MongoDB, escriba el siguiente comando.
$ sudo systemctl start mongodb
Para reiniciar un servicio de MongoDB, escriba el siguiente comando.
$ sudo systemctl restart mongodb
Para deshabilitar el servicio MongoDB iniciado automáticamente, escriba el siguiente comando.
$ sudo systemctl disable mongodb
Para habilitar nuevamente el servicio MongoDB, escriba el siguiente comando.
$ sudo systemctl enable mongodb
Paso 4) Ajuste del firewall para acceder a MongoDB de forma remota
Si nos gustaría poder conectarnos a nuestro servidor MongoDB desde Internet, tenemos que permitir las conexiones entrantes en ufw
.
De forma predeterminada, MongoDB se ejecuta en el puerto 27017
, para permitir el acceso desde cualquier lugar, podemos escribir el siguiente comando.
$ sudo ufw allow 27017
Pero es mejor dar acceso a la ubicación de la dirección IP específica al puerto predeterminado de MongoDB usando el comando a continuación.
$ sudo ufw allow from our_server_IP/32 to any port 27017
De forma predeterminada, UFW está deshabilitado, por lo que debería ver algo como esto:
Output:
Status: inactive
Para permitir ufw
escriba el comando a continuación.
$ sudo ufw enable
Para verificar el cambio en la configuración del firewall con ufw
escriba el comando a continuación.
$ sudo ufw status
Output:
Status: active
To Action From
-- ------ ----
27017 ALLOW 72.14.177.72
Por defecto el puerto 27017
escucha en la dirección local 127.0.0.1 solamente. Para permitir conexiones remotas de MongoDB, necesitamos agregar la dirección IP de nuestro servidor a /etc/mongodb.conf
archivo de configuración como se muestra a continuación.
$ sudo nano /etc/mongodb.conf
bind_ip = 127.0.0.1,our_server_ip
#port = 27017
Finalmente, reiniciamos MongoDB.
$ sudo systemctl restart mongodb
Paso 4) Cree el usuario raíz y la contraseña de la base de datos MongoDB
Para iniciar el shell mongo, ejecute el siguiente comando.
$ sudo mongo
Podemos listar todas las bases de datos disponibles con el siguiente comando.
> show dbs
output: admin 0.000GB config 0.000GB local 0.000GB
Necesitamos crear un administrador de usuario como usuario root en MySQL / MariaDB en el admin database
. Este usuario puede administrar usuarios y roles, como crear usuarios, otorgar o revocar roles de usuarios y crear o modificar roles de aduana.
Primero cambie al admin
base de datos, luego cree el usuario raíz usando los siguientes comandos.
> use admin > db.createUser({user:"root", pwd:"pass123", roles:[{role:"root", db:"admin"}]})
output: Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ] }
Ahora salga del shell mongo escribiendo Ctrl + c
para habilitar la autenticación.
Necesitamos habilitar la autenticación de usuarios editando /lib/systemd/system/mongod.service
archivo, primero abra el archivo para editarlo.
$ sudo nano /lib/systemd/system/mongodb.service
Bajo la [Service]
config, busque el parámetro ExecStart.
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
Y cámbielo a lo siguiente:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
/lib/systemd/system/mongodb.service ............ [Service] User=mongodb Group=mongodb RuntimeDirectory=mongodb RuntimeDirectoryMode=0755 EnvironmentFile=-/etc/default/mongodb Environment=CONF=/etc/mongodb.conf Environment=SOCKETPATH=/run/mongodb ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS LimitFSIZE=infinity LimitCPU=infinity LimitAS=infinity LimitNOFILE=64000 LimitNPROC=64000 .............
Guarde el archivo y salga escribiendo Ctrl + x
.
Después de realizar cambios en el archivo de configuración, ejecute systemctl daemon-reload
para recargar unidades y reiniciar el servicio MongoDB y verificar su estado de la siguiente manera.
$ sudo systemctl daemon-reload $ sudo systemctl restart mongodb $ sudo systemctl status mongodb
output:
● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-08-06 16:08:03 UTC; 20s ago
Docs: man:mongod(1)
Main PID: 15194 (mongod)
Tasks: 23 (limit: 1112)
CGroup: /system.slice/mongodb.service
└─15194 /usr/bin/mongod --auth --unixSocketPrefix=/run/mongodb --config /etc/mongodb.con
Aug 06 16:08:03 li34-72 systemd[1]: Stopped An object/document-oriented database.
Aug 06 16:08:03 li34-72 systemd[1]: Started An object/document-oriented database.
Ahora, cuando intentamos conectarnos a mongodb, debemos autenticarnos como usuario de MongoDB.
$ sudo mongo -u "root" -p --authenticationDatabase "admin"
Leer también:
Gracias por leer el artículo y deje sus comentarios a continuación.