MongoDB: differenze tra le versioni
Riga 72: | Riga 72: | ||
# mongo 192.168.1.10/persone | # mongo 192.168.1.10/persone | ||
</pre> | </pre> | ||
Il comando specificato richiederà la connessione al server MongoDB con indirizzo 192.168.1.10 ed in particolare | Il comando specificato richiederà la connessione al server MongoDB con indirizzo 192.168.1.10 ed in particolare al database persone.<br/> | ||
A questo punto si potrà richiedere l'utilizzo | A questo punto si potrà richiedere l'utilizzo del database "loggandosi" con il comando db.auth: | ||
<pre> | <pre> | ||
> db.auth("manager","12345") | > db.auth("manager","12345") | ||
Riga 80: | Riga 80: | ||
* 1 = incaso di login effettuato con successo; | * 1 = incaso di login effettuato con successo; | ||
* 0 = in caso di errore. | * 0 = in caso di errore. | ||
Se non si effettuasse il login, ad ogni tentativo di lettura dei dati | Se non si effettuasse il login, ad ogni tentativo di lettura dei dati del database si riceverà un messaggio di errore di tipo: | ||
<pre> | <pre> | ||
Error: uncaught exception: error: { "$err" : "unauthorized for db [persone] lock type: -1 " } | Error: uncaught exception: error: { "$err" : "unauthorized for db [persone] lock type: -1 " } | ||
</pre> | </pre> |
Versione delle 22:18, 1 set 2012
Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.
Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template. |
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 installa 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.
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 " }