Guida da adottare! Bannermv.png


Cos'è MongoDB ?

MongoDB è un database opensource che fa parte di una tipologia particolare: è un database NoSQL.
E' da tempo che si parla di questi prodotti che cercano di gestire i dati rompendo con la tradizione dei database relazionali e il linguaggio dichiarativo SQL.
MongoDB è un database orientato ai documenti e sfrutta molto il formato JSON per il trattamento delle informazioni.

Installare MongoDB

Se lo si vuole installare sulla propria macchina Debian è sufficiente utilizzare un unico comando aptitude, infatti:

# aptitude install mongodb

procederà all'installazione del server e del client.
Nella tipica nomenclatura del mondo GNU/Linux:

  • il server prenderà il nome di mongod;
  • il client sarà mongo.

Comunque si deve sempre tenere presente, come spesso capita, che tramite i comuni repository si trova una versione stabile del db ma meno recente dell'ultima stabile. Essendo MongoDB un prodotto nuovo e quindi in veloce evoluzione si può cercare di ottenere l'ultima versione stabile tramite il repository predisposto per la versione Debian del db.
In questo caso la procedura sarà:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

per richiedere la chiave pubblica per l'autenticazione.
Si creerà un file di indirizzo /etc/apt/sources.list.d/10gen.list per l'indirizzo del nuovo repository. Il file conterrà la seguente riga:

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

A questo punto si procederà all'aggiornamento dei pacchetti con:

aptitude update

e si troverà disponibile un pacchetto di nome mongodb-10gen corrispondente all'ultima versione stabile del prodotto.

  Suggerimento
Qualora ci si trovasse di fronte a problemi in fase dell'avvio del server MongoDB, si controlli la versione installata.
Alcune opzioni usate nel file di configurazione potrebbero appartenere ad una versione più recente di quella presente sulla propria macchina.
In tal caso, si veda, come spiegato, nel repository 10gen qual è l'ultima versione stabile di MongoDB


Start, Stop e Restart

L'avvio del servizio e le corrispondenti azioni di stop e riavvio sono disponibili tramite le rispettive seguenti operazioni:

# /etc/init.d/mongo start
# /etc/init.d/mongo stop
# /etc/init.d/mongo restart

Utilizzando il comando ps sarà possibile osservare l'effettivo successo dell'operazione impartita.

Configurazione

MongoDB è configurabile tramite il file /etc/mongodb.conf. Come capita spesso, il file predisposto ha valore di default ed è fornito di commenti esplicativi.
Comunque una configurazione normale di MongoDB ha bisogno solo di poche righe di configurazione pertanto conviene salvare il file originario di configurazione con un nuovo nome:

# mv /etc/mongodb.conf /etc/mongodb.conf.orig

e creare un nuovo file di configurazione di nome /etc/mongodb.conf, con un contenuto simile a questo:

bind_ip = 127.0.0.1
port = 27017
quiet = true
dbpath = /srv/mongodb
logpath = /var/log/mongodb/mongod.log
logappend = true

I pochi parametri impostati sono:

  • bind_ip: definire l'indirizzo su cui il server è in ascolto;
  • port: la porta TCP su cui il server sarà contattato;
  • dbpath: la directory che conterrà i database;
  • logpath: file di log.

Sicurezza

La sicurezza di MongoDB può essere curata sotto tre aspetti.

Firewall

Essendo un servizio di rete, contattabile tramite l'infrastruttura TCP/IP, il primo modo per proteggere la nostra installazione di MongoDB è la configurazione di regole firewall tramite iptables che permettano il traffico sulle porte solo per gli indirizzi che si desidera.
Lo stesso parametro bind_ip della configurazione di cui si è parlato rappresenta un primo elemento di sicurizzazione in quanto permette di agganciare il server ad un indirizzo specifico.

Autenticazione: il Secure Mode

Di default, MongoDB non lavora in secure mode ossia non fa uso dell'autenticazione. Ciò comunque in un ambiente di produzione ciò non può bastare ed abilitare l'autenticazione per gli utenti è doveroso.
Farlo comunque non è oneroso. Sarà sufficiente aggiungere nel file di configurazione /etc/mongodb.conf la seguente riga:

auth=true

A questo punto si dovrà abilitare degli utenti. Ciò che si deve specificare per ogni accesso è:

  • nome utente e password;
  • a quale database è consentito l'accesso;
  • se l'accesso è in sola lettura o in lettura/scrittura (default).

Quindi si dovrà fare un log come amministratore e collocarsi sul database che per il quale si vuole configurare l'accesso, ad esempio 'persone':

use persone

dopodichè si creerà l'utente con tanto di username e password, ad esempio username="manager" e password="12345":

db.addUser("manager","12345")

L'accesso è stato così creato ed è in modalità lettura/scrittura. Per averlo read-only si sarebbe dovuto dare il comando:

db.addUser("manager","12345",true)

Per effettuare l'accesso tramite le credenziali utente ci si dovrà connettere tramite client:

# mongo 192.168.1.10/persone

Il comando specificato richiederà la connessione al server MongoDB con indirizzo 192.168.1.10 ed in particolare al database persone.
A questo punto si potrà richiedere l'utilizzo del database "loggandosi" con il comando db.auth:

> db.auth("manager","12345")

In output si vedrà apparire un solo numero:

  • 1 = incaso di login effettuato con successo;
  • 0 = in caso di errore.

Se non si effettuasse il login, ad ogni tentativo di lettura dei dati del database si riceverà un messaggio di errore di tipo:

Error: uncaught exception: error: { "$err" : "unauthorized for db [persone] lock type: -1 " }


Guida scritta da: Turinext   Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized