Domanda

Sto cercando di capire MongoDB al fine di valutare se si tratta di un percorso vorrei prendere per applicazioni future o meno. Al fine di distribuire in modo sensato sul mio server, avrei dovuto farlo funzionare con l'autenticazione abilitato (vale a dire con l'argomento --auth o con auth = true nel file di configurazione).

L'installazione sembra relativamente straightfoward e sono stato procedendo con l'assistenza della documentazione, se necessario. In particolare, le href="http://www.mongodb.org/display/DOCS/Security+and+Authentication" sulla sicurezza fa un buon lavoro di spiegare il processo di esecuzione con autenticazione attivato e inserendo il vostro primo utente admin. Tuttavia, le cose non hanno proceduto secondo i piani.

Esecuzione di senza auth produce il risultato sarebbe auspicabile - funziona, con il seguente risultato:

Thu Dec 10 21:14:24 Mongo DB : starting : pid = 9350 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0  64-bit 
Thu Dec 10 21:14:24 db version v1.3.0-, pdfile version 4.5
Thu Dec 10 21:14:24 git version: 32d56f6d81a98b569103149c9ffea9f25a1ece81
Thu Dec 10 21:14:24 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_37
Thu Dec 10 21:14:24 waiting for connections on port 27017

Tuttavia, l'esecuzione con autenticazione (utilizzando metodi, arg o direttiva config) produce il seguente output e il processo si chiude immediatamente:

Thu Dec 10 21:15:37 Mongo DB : starting : pid = 9361 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0  64-bit 
Thu Dec 10 21:15:37 User Exception unauthorized
Thu Dec 10 21:15:37  local.system.namespaces  Caught Assertion in runQuery ns:local.system.namespaces userassert:unauthorized
Thu Dec 10 21:15:37   ntoskip:0 ntoreturn:0
Thu Dec 10 21:15:37   query:{ name: /^local.temp./ }
Thu Dec 10 21:15:37 query local.system.namespaces ntoreturn:0 exception  0ms
Thu Dec 10 21:15:37 Dropping old temporary collection: 
Thu Dec 10 21:15:37 User Exception no collection name
Thu Dec 10 21:15:37   exception in initAndListen std::exception: no collection name, terminating
Thu Dec 10 21:15:37  dbexit: 
Thu Dec 10 21:15:37   shutdown: going to flush oplog...
Thu Dec 10 21:15:37   shutdown: going to close sockets...
Thu Dec 10 21:15:37   shutdown: waiting for fs...
Thu Dec 10 21:15:37   shutdown: closing all files...
Thu Dec 10 21:15:37      closeAllFiles() finished
Thu Dec 10 21:15:37   shutdown: removing fs lock...
Thu Dec 10 21:15:37  dbexit: really exiting now
ERROR: Client::shutdown not called!

Come notato nei tag, questo è in esecuzione su OS X Snow Leopard e si sta usando l'ultima X a 64 bit 1.3.x OS notte binary scaricare (dovrei tornare al 1.2 stabile forse?)

Qualche idea di cosa sta causando questo e quello che posso fare per risolverlo? Non è così importante sulla mia macchina locale, ma ho bisogno di lavorare in modalità sicura per rendere più pratico per qualsiasi uso in produzione a tutti.


PS: se questo dovrebbe essere su ServerFault piuttosto che SO, sentitevi liberi di farlo vi si trasferì. Non ero sicuro di quale ambiente adatto che la cosa migliore.


Aggiornamento:

Ho provato esecuzione senza autenticazione, l'aggiunta di un utente e rieseguire con auth come raccomandato dal mdirolf e Mathias. Tuttavia, la sua ancora vomitare lo stesso errore. L'utente è stato aggiunto nel seguente modo:

Mark@Destiny mongodb$ sudo bin/mongo
MongoDB shell version: 1.3.0-
url: test
connecting to: test
type "help" for help
> use admin
switched to db admin
> db.addUser("Mark", "my-password-went-here")   
{ "user" : "Mark", "pwd" : "9934...be15da0" }
> db.system.users.find()
{ "_id" : ObjectId("4b216ed0be8a0b185767654e"), "user" : "Mark", "pwd" : "9934a190b...babe15da0" }
> exit
bye

corsa successiva senza autenticazione e di entrare nella shell mongo dimostrare l'utente è di fatto ancora lì. Sto facendo qualcosa di stupido?

È stato utile?

Soluzione

Ahh, sembra aver trovato un bug in master. Ho creato un caso per esso: http://jira.mongodb.org/browse/SERVER -474 .

Si prega di provare la MongoDB recentemente rilasciato 1.2.0. Git master (ramo 1.3.x) è non pronto per l'uso ancora.

Altri suggerimenti

È necessario avere già un utente nel DB amministratore prima di avviare il server con --auth. Ho appena aggiunto una nota per la documentazione di citare questo modo che nessun altro è sorpreso.

Tra l'altro, la maggior parte (se non tutti) distribuzioni di produzione mongodb eseguiti senza autenticazione. Suggeriamo trattare l'autenticazione nella propria applicazione e la configurazione del firewall sul server di database per permettere solo le connessioni dai server web / app.

È necessario aggiungere un utente prima di iniziare con --auth. Inizia senza --auth e aggiungere un utente, quindi riavviare con --auth.

La sezione di sicurezza è stato aggiornato per descrivere questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top