En este blog se ha hablado sobre algunos sistemas de bases de datos, entre los cuales los más populares son MariaDB y MySQL, pues son los sistemas que suelen incluir en Xampp o Lampp. En esta ocasión vamos a hablar sobre otro sistema el cual es MongoDB.
MongoDB es un sistema de base de datos NoSQL orientado a documentos de código abierto, este es un moderno sistema de gestión de base de datos documental diseñado para la persistencia de datos de alto rendimiento, alta disponibilidad, así como la escala automática, basada en la tecnología de la técnica de NoSQL .
En lugar de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB , guarda estructuras de datos en un documento, que es una estructura de datos que comprende de pares de campo y el valor (documentos MongoDB son comparables a objetos JSON).
Debido a que proporciona un alto rendimiento y excelentes características de escalabilidad, que está siendo utilizado para construir aplicaciones modernas que requieren potentes bases de datos de misión crítica y de alta disponibilidad.
Instalación de MongoDB en Ubuntu
Para instalar este sistema de base de datos en nuestro sistema, solamente debemos de abrir una terminal y ejecutar en ella el siguiente comando:
sudo apt install mongodb
Hecha la instalacion, el servicio MongoDB comenzará automáticamente a través de systemd y el proceso se ejecutará en el puerto 27017. Puede comprobar su estado usando el comando:
sudo systemctl status mongodb
En caso de que no sea asi, podemos forzar el inicio con este comando:
sudo systemctl start mongodb
Habilitando conexiones remotas a MongoDB
El sistema de base de datos de MongoDB por defecto utiliza el puerto 27017 el cual debemos de abrir para poder aceptar conexiones remotas, para ello solamente lo habilitamos con el siguiente comando.
sudo ufw allow 27017
Por defecto el puerto 27017 solamente puede ser accesador desde la dirección local 127.0.0.1. Para permitir conexiones remotas a MongoDB, es necesario agregar la dirección IP del servidor en el fichero /etc/mongodb.conf
Basta con editarlo con:
sudo nano
Y podremos ver algo similar a esto:
bind_ip = 127.0.0.1, your_server_ip #port = 27,017
El cual editamos con los datos de nuestro servidor.
Permitiendo el acceso a MongoDB de todas partes, da acceso sin restricciones a los datos de la base de datos. Por lo tanto, es mejor dar acceso a la ubicación específica dirección IP por defecto del puerto de MongoDB.
sudo ufw allow from your_server_IP/32 to any port 27017 sudo ufw status
Hecho esto basta con reiniciar el servicio para que los cambios nuevos sean cargados al inicio, esto lo hacemos con:
sudo systemctl restart mongodb
Crear un usuario en MongoDB con contraseña
Por defecto la base de datos cuenta con un acceso bastante simple, por lo que para reforzar esto podemos crear un usuario con una contraseña.
MongoDB utiliza el mecanismo de autenticación SCRAM de forma predeterminada. El uso de SCRAM en el sistema verifica las credenciales de usuario suministrados contra el usuario de nombre, contraseña y base de datos de autenticación.
Bastan con iniciar la consola de la base de datos con el siguiente comando:
Mongo
Podemos realizar un listado de las bases de datos existentes con:
show dbs
Podemos crear un usuario que nos permitira administrar usuarios y funciones tales como crear usuarios, conceder o revocar las funciones de los usuarios, y crear o modificar las funciones de aduanas.
Basta con teclear
use admin
Y creamos el usuario con el siguiente comando, donde remplazamos el nombre del usuario “root” y la contrasela “password”, por las crecenciales de acceso que creamos convenientes.
db.createUser({user:"root", pwd:"password", roles:[{role:"root", db:"admin"}]})
Hecho esto debemos de habilitar el método de autentificación para ello vamo a editar el siguiente archivo:
sudo nano /lib/systemd/system/mongodb.service
Y vamos a buscar la siguiente línea:
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
Y la editamos para que quede de la siguiente forma:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
Ahora simplemente reiniciamos en la base de datos
systemctl daemon-reload sudo systemctl restart mongodb sudo systemctl status mongodb
Y probamos el método de autentificación con:
mongo -u "usuario" -p --authenticationDatabase "contraseña"
Ayudame con este ERROR.
2021-03-24T21:33:16.233+0000 E QUERY [thread1] Error: listDatabases failed:{
«ok» : 0,
«errmsg» : «not authorized on admin to execute command { listDatabases: 1.0, $db: \»admin\» }»,
«code» : 13,
«codeName» : «Unauthorized»
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:816:19
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1