# sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6
# 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
# sudo apt-get update
Después, para instalarlo, escribimos en el terminal:
# sudo apt-get install -y mongodb-org
Cuando haya terminado de instalarse, lo podemos ejecutar desde la consola escribiendo
# sudo service mongod start
Para comprobar que se está ejecutando bien hay que mirar el archivo /var/log/mongodb/mongod.log. Si el servidor está a la espera de conexiones es que se ha iniciado bien.

El servidor se puede parar desde el terminal escribiendo
# sudo service mongod stop
En el mismo archivo de antes podemos comprobar que se ha parado sin errores.

Y para conectarnos a la consola de MongoDB basta con ejecutar
# mongo
Configuración de la seguridad
Ahora vamos a configurar MongoDB para aumentar la seguridad del mismo. Lo primero que vamos a hacer es crear un usuario administrador. Para ello nos conectamos a la consola de MongoDB.
# mongo
> use admin
> db.createUser({
user: “root”,
pwd: “pass”,
roles: [{ role: “userAdminAnyDatabase”, db: “admin” }] });
Ya hemos creado el usuario administrador root. Para conectarnos usando ese usuario, hay dos formas:
- Conectarnos directamente a la consola ya autenticados (código de la izquierda).
- Conectarnos a la consola y después autenticarnos (código de la derecha).
# mongo -u “root” -p “pass” –authenticationDatabase “admin”
# mongo
> use admin
> db.createUser(“root”, “pass”);
Nota: es muy importante crear primero el usuario y después modificar la configuración, ya que si no está creado el usuario no podremos autenticarnos en MongoDB y tendremos que deshacer los cambios y empezar desde el paso anterior.
Ya está creado el usuario administrador, pero ahora hace falta activar la autenticación en el archivo de configuración de MongoDB. Para ello tenemos que modificar el archivo /etc/mongod.conf.
# sudo nano /etc/mongod.conf
# Where and how to store data.
storage:
dbPath: /db/db1
journal:
enabled: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled
Hay muchas configuraciones en este fichero, pero nos vamos a centrar en tres:
- Con dbPath seleccionamos el directorio donde se van a guardar todos los datos de nuestras bases de datos. Hay que tener cuidado con los permisos, ya que el usuario que ejecuta MongoDB tiene que poder acceder. Para dar permisos al usuario de MongoDB puedes ejecutar sudo chown mongodb:mongodb -R /db/db1.
- En bindIp configuramos la IP que tendrá acceso a MongoDB. En mi caso, sólo aceptaría peticiones de la propia máquina, por lo que pondríamos “localhost” o “127.0.0.1”, si se quisiera dar acceso a alguna IP externa a nuestro MongoDB, pues pondríamos esa IP.
- Para activar la autenticación se añaden las líneas que están en el código en negrita (‘security:’ y también ‘authorization: enabled’).
Ya sólo nos quedaría crear un usuario y asignarle permisos para una base de datos.
> use admin
> db.createUser({
user: “dbuser”,
pwd: “dbpass”,
roles: [{ role: “readWrite”, db: “test” }] });
A continuación, el usuario dbuser tendrá como authorizationDatabase la base de datos admin porque es en la que se ha creado, pero tiene permisos de lectura y escritura en la base de datos test.
MongoDB 3.4 + PHP 7
En PHP 7 ha cambiado la versión de la librería de MongoDB. Para instalarla tenemos que ejecutar.
# sudo apt-get install libssl-dev pkg-config libbson libmongoc php7.0-dev
# sudo pecl install mongodb
En el archivo /etc/php/7.0/apache2/php.ini añadimos:
extension=mongodb.so
Finalmente, sólo tenemos que reinicar Apache
# sudo service apache2 restart
Con esto ya hemos terminado de instalar, configurar MongoDB 3.4 y hemos hecho que sea accesible desde PHP.
No funciona sale error .
ubuntu@ubuntu:~$ sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6
Executing: /tmp/tmp.PCaiUZ0BGj/gpg.1.sh –keyserver
hkp://keyserver.ubuntu.com:80
–recv
0C49F3730359A14518585931BC711F9BA15703C6
uso: gpg [opciones] [nombre_archivo]
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ sudo apt-get update
……
….
W: Error de GPG: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 Release: Las firmas siguientes no se pudieron verificar porque su clave pública no está disponible: NO_PUBKEY BC711F9BA15703C6
W: El repositorio «http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 Release» no está firmado.
N: Los datos de un repositorio como este no se pueden autenticar y por tanto su uso es potencialmente peligroso.
N: Vea la página de manual apt-secure(8) para los detalles sobre la creación de repositorios y la configuración de usuarios.
ubuntu@ubuntu:~$ sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6
Executing: /tmp/tmp.18oVyOnalI/gpg.1.sh –keyserver
hkp://keyserver.ubuntu.com:80
–recv
0C49F3730359A14518585931BC711F9BA15703C6
uso: gpg [opciones] [nombre_archivo]
ubuntu@ubuntu:~$
Hola, ten cuidado al hacer copy/paste ya que wordpress no permite poner dos veces el carácter “-“, en tu terminal deberás tener cuidado con “keyserver” y “recv” ya que ambos llevan delante dos guiones.
Un saludo!