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?