Installare e configurare MongoDB su Ubuntu Linux

MongoDB è un database documentale non relazionale (NoSQL) tra i più famosi ed utilizzati al mondo, in special modo dagli utenti di Node.js. Forse non tutti sanno però che è utilizzabile anche da altri linguaggi web, come ad esempio PHP o ASP, a patto di utilizzare le apposite librerie di supporto.

Oggi vediamo come installarlo ed utilizzarlo sulla nota distribuzione Ubuntu Linux.

La prima cosa da fare è installare l’apposito pacchetto che è disponibile nei repository di Ubuntu tramite un:

sudo apt-get install mongodb

A questo verrà installato sia il servizio del server (mongod) sia il client per utilizzarlo a riga di comando (mongo) e sarà pronto per essere utilizzato localmente senza il bisogno di credenziali.

Se vogliamo accedere localmente a mongodb ci basterà digitare:

mongo

e ci si presenterà la shell di mongodb pronta ed in attesa di comandi.

A questo punto ci potrebbe interessare renderlo accessibile dall’esterno (come ad esempio da una VPS) e magari tramite autenticazione (mica vorremo che tutti possano accederci liberamente, no!?).

Perciò la prima cosa che dobbiamo fare è aggiungere un utente al gruppo di amministrazione:

use admin
db.addUser('admin', '12345');

Ed andiamo ad abilitare l’autenticazione e l’ascolto da IP esterni in questa maniera:

sudo vim /etc/mongodb.conf

e aggiungiamo/modifichiamo queste linee:

bind_ip = 0.0.0.0
port = 27017
auth = true

Così gli diremo di accettare connessioni da qualsiasi IP sulla porta 27017 e di abilitare l’autenticazione.

A questo punto diamo un:

sudo service mongodb restart

e MongoDB sarà riavviato per rendere effettive le modifiche apportate. Infine creiamo un db ed associamogli un utente, perciò riconnettiamoci sulla shell di mongo ed inseriamo i seguenti comandi:

use admin
db.auth('admin', '12345');
use prova
db.addUser('user', 'pwd123');

E così avremo creato un nuovo db di nome “prova” accessibile dall’utente “user” con password “pwd123” tramite questo link:

mongodb://user:pwd123@123.45.67.89:27017/prova

Facile, no?