Vamos a instalar MongoDB en Ubuntu con un paquete .deb. Ubuntu por defecto ya incluye sus propios paquetes para MongoDB pero los oficiales de MongoDB suelen estar más actualizados, así que vamos a usar esos.
Importamos la llave publica que usa el gestor de paquetes:
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 |
Creamos el fichero tipo “list” para MongoDB según nuestra versión de Ubuntu:
Para Ubuntu 12.04:
1 |
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list |
Para Ubuntu 14.04:
1 |
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list |
Para Ubuntu 16.04:
1 |
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list |
Refrescamos la base de datos local de paquetes:
1 |
sudo apt-get update |
Por ultimo instalamos los paquetes de MongoDB
1 |
sudo apt-get install -y mongodb-org |
Lanzar MongoDB
MongoDB, por defecto guarda todos los ficheros de datos en “/var/lib/mongodb” y los de logs en “/var/log/mongodb” y usa el usuario mongodb. Todo esto puede cambiarse desde el fichero de configuración de MongoDB en “/etc/mongod.conf“.
Vamos a crear un servicio para lanzar MongoDB, lo hacemos así por que de este modo podemos habilitar el inicio automático cuando se reinicie nuestro equipo, podemos usar el siguiente comando para crear este fichero:
1 |
sudo nano /lib/systemd/system/mongodb.service |
Y pegamos el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=MongoDB Database Service Wants=network.target After=network.target [Service] ExecStart=/usr/bin/mongod --config /etc/mongod.conf ExecReload=/bin/kill -HUP $MAINPID Restart=always User=mongodb Group=mongodb StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target |
Para iniciar MongoDB:
1 |
sudo systemctl start mongodb |
Para parar MongoDB:
1 |
sudo systemctl stop mongodb |
Y para que se ejecute automáticamente al iniciar el sistema:
1 |
sudo systemctl enable mongodb.service |
Podemos comprobar si se ha iniciado correctamente comprobando el fichero de log en “/var/log/mongodb/mongod.log“, buscaremos la linea donde dice “[initandlisten] waiting for connections on port <port>“.
Asignar contraseña al usuario administrador
Entramos a la linea de comandos de mongo usando el comando “mongo“, una vez dentro, especificamos que vamos a trabajar con la base de datos “admin“:
1 |
use admin; |
Ahora creamos el usuario administrador con el rol “root“, podemos usar el nombre y contraseña que queramos:
1 2 3 4 5 6 |
db.createUser( { user: "admin", pwd: "CONTRASEÑA", roles:["root"] }) |
Si más tarde queremos cambiar la contraseña de este usuario, usamos el siguiente comando:
1 |
db.changeUserPassword("admin", "NUEVA-CONTRASEÑA") |
Salimos de la linea de comandos de mongo con “exit“.
Ahora tenemos que modificar la configuración de MongoDB para habilitar la autenticación de usuarios:
1 |
sudo nano /etc/mongod.conf |
Buscamos la linea “security:” y le quitamos el comentario si lo tiene, luego justo debajo añadimos “authorization: ‘enabled’“:
1 2 |
security: authorization: 'enabled' |
Desde este mismo fichero también podemos especificar que IPs se van a conectar a nuestra base de datos, por defecto solo acepta conexiones locales así que si queremos acceder desde el exterior tenemos que editar el parámetro “bindIp“, si lo comentamos permitiremos el acceso desde cualquier lugar:
1 |
# bindIp: 127.0.0.1 |
Por ultimo reiniciamos MongoDB para cargar la nueva configuración:
1 |
sudo service mongod restart |
Hay que tener en cuenta que a partir de ahora, cuando usemos la linea de comandos de mongo, tenemos que autenticarnos al usar una base de datos:
1 2 |
use admin; db.auth('admin','CONTRASEÑA'); |
Ajustando el Firewall (Opcional)
Si tenemos activado el firewall por defecto de Ubuntu (ufw) no va a permitir conexiones externas a nuestra instalación de MongoDB, para abrir el puerto 27017 (el puerto por defecto de MongoDB) usamos el siguiente comando:
1 |
ufw allow 27017 |
Para más seguridad, podemos indicar la IP concreta desde la que nos vamos a conectar:
1 |
sudo ufw allow from IP/32 to any port 27017 |
Podemos verificar el cambio en la configuración del firewall con ufw status:
1 |
sudo ufw status |