MongoDB es un sistema de base de datos NoSQL multiplataforma escrito en C++. MongoDB es diferente de las bases de datos SQL basadas en tablas tradicionales como MySQL y PostgreSQL y está especialmente diseñado para el almacenamiento de datos de gran volumen. MongoDB usa documentos similares a JSON con esquemas dinámicos y no requiere un esquema predefinido antes de agregar datos a una base de datos. MongoDB es gratuito, de código abierto y viene con un amplio conjunto de características que incluyen almacenamiento, replicación de datos, consultas Ad-hoc, equilibrio de carga y muchas más.
En este tutorial, explicaremos cómo instalar y asegurar MongoDB en CentOS 8.
Requisitos
- Un nuevo CentOS 8 VPS en la plataforma en la nube de Atlantic.net.
- Una contraseña raíz configurada en su servidor.
Paso 1:crear un servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo CentOS 8 como sistema operativo con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor CentOS 8, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:agregue el repositorio de MongoDB
Puedes crearlo con el siguiente comando:
nano /etc/yum.repos.d/mongodb-org.repo
Agregue las siguientes líneas:
[mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
Guarde y cierre el archivo cuando haya terminado. A continuación, puede proceder a instalar MongoDB en su sistema.
Paso 3:instalar MongoDB
Ahora, puede instalar MongoDB simplemente ejecutando el siguiente comando:
dnf install mongodb-org -y
Una vez que se haya completado la instalación, inicie el servicio MongoDB y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:
systemctl start mongod systemctl enable mongod
Ahora puede verificar el estado del servicio MongoDB usando el siguiente comando:
systemctl status mongod
Debería ver el siguiente resultado:
● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-10 10:58:18 EDT; 7s ago Docs: https://docs.mongodb.org/manual Process: 2904 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Process: 2902 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2899 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2897 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Main PID: 2906 (mongod) Memory: 77.0M CGroup: /system.slice/mongod.service └─2906 /usr/bin/mongod -f /etc/mongod.conf Apr 10 10:58:17 centos8 systemd[1]: Starting MongoDB Database Server... Apr 10 10:58:17 centos8 mongod[2904]: about to fork child process, waiting until server is ready for connections. Apr 10 10:58:17 centos8 mongod[2904]: forked process: 2906 Apr 10 10:58:18 centos8 mongod[2904]: child process started successfully, parent exiting Apr 10 10:58:18 centos8 systemd[1]: Started MongoDB Database Server.
Ahora, MongoDB se está ejecutando y escuchando en el puerto 27017. Puede verificarlo con el siguiente comando:
netstat -pnltu | grep 27017
Deberías obtener el siguiente resultado:
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2906/mongod
También puede acceder al shell de MongoDB con el siguiente comando:
mongo
Deberías obtener el siguiente resultado:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("b0f7656f-f939-4f50-87d2-01cbeca0849a") } MongoDB server version: 4.2.5 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2020-04-10T10:58:18.522-0400 I CONTROL [initandlisten] --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() ---
Puede salir del shell de MongoDB con el siguiente comando:
>exit
Paso 4:habilite la autenticación de MongoDB
nano /etc/mongod.conf
Agregue la siguiente línea al final del archivo:
security: authorization: enabled
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio MongoDB para aplicar los cambios:
systemctl restart mongod
Paso 5:cree un usuario administrador de MongoDB
A continuación, deberá crear un usuario administrativo con todos los privilegios para realizar tareas administrativas.
Primero, acceda al shell de MongoDB con el siguiente comando:
mongo
Deberías obtener el siguiente resultado:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("09e0e028-cd26-4f9d-9270-52b938925f99") } MongoDB server version: 4.2.5
A continuación, cambie la base de datos a administrador con el siguiente comando:
> use admin
A continuación, cree un usuario administrador de MongoDB llamado myadmin con el siguiente comando:
> db.createUser( { user: "myadmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
Una vez que se haya creado el usuario, debería obtener el siguiente resultado:
Successfully added user: { "user" : "myadmin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
A continuación, salga del shell de MongoDB con el siguiente comando:
>exit
Paso 6:verificar la autenticación de MongoDB
En este punto, MongoDB está configurado con autenticación. Ahora se le pedirá que proporcione un nombre de usuario y una contraseña antes de interactuar con MongoDB.
A continuación, conecte MongoDB sin autenticación:
mongo
Deberías obtener el siguiente resultado:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("fecf1846-13fd-4959-91da-5cf323781e13") } MongoDB server version: 4.2.5
Ahora, ejecute el siguiente comando para enumerar los usuarios de MongoDB:
> show users
Debería recibir el siguiente error:
2020-04-10T11:08:04.598-0400 E QUERY [js] uncaught exception: Error: command usersInfo requires authentication : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/db.js:1638:15 [email protected]/mongo/shell/utils.js:883:9 [email protected]/mongo/shell/utils.js:790:15 @(shellhelp2):1:1
Esto demuestra que no puede enumerar los usuarios sin autenticarse.
Ahora, salga de MongoDB con el siguiente comando:
>exit
Paso 7:acceda a MongoDB con el usuario administrativo
Ahora, conectémonos a MongoDB con el usuario administrativo:
mongo -u myadmin -p --authenticationDatabase admin
Se le pedirá que proporcione su contraseña de administrador como se muestra a continuación:
MongoDB shell version v4.2.5 Enter password:
Proporcione su contraseña de administrador y presione Enter . Deberías obtener el siguiente resultado:
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("a39f723c-f1b5-4c93-9e67-ff82379dfb62") } MongoDB server version: 4.2.5
A continuación, cambie la base de datos a admin y enumere los usuarios con el siguiente comando:
> use admin > show users
Deberías obtener el siguiente resultado:
{ "_id" : "admin.myadmin", "userId" : UUID("bcd920c1-63fd-4b82-a8a6-eb6515d51a34"), "user" : "myadmin", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
Ahora, salga del shell de MongoDB con el siguiente resultado:
> exit
Conclusión
En la guía anterior, aprendimos cómo instalar MongoDB en CentOS 8. También mostramos cómo habilitar la autenticación de MongoDB y crear un usuario administrativo. Su MongoDB en su Atlantic.Net VPS ahora está protegido con nombre de usuario y contraseña. Si no tiene un VPS de Atlantic.Net, ¡comience hoy con el alojamiento de VPS para instalar MongoDB!