Pregunta

Estoy tratando de averiguar MongoDB con el fin de evaluar si se trata de una ruta que me gustaría aprovechar para futuras aplicaciones o no. Con el fin de implementar con sensatez en mi servidor, que tendría que funcionar con autentificación (es decir, con el argumento --auth o con auth = true en el archivo de configuración).

La instalación parece relativamente straightfoward y he estado llevando a cabo con la ayuda de la documentación cuando sea necesario. En particular, los href="http://www.mongodb.org/display/DOCS/Security+and+Authentication" en la seguridad hace un muy buen trabajo de explicar el proceso de ejecución con autenticación habilitada y la inserción de su primera usuario administrador. Sin embargo, las cosas no han procedido de acuerdo al plan.

Ejecutar sin de autenticación produce el resultado que uno esperaría - se ejecuta, con el siguiente resultado:

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

Sin embargo, ejecutar con autenticación (utilizando ya sea métodos, arg o directiva config) produce la siguiente salida y el proceso sale inmediatamente:

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!

Como se indica en las etiquetas, esto se ejecuta en OS X Leopard y está utilizando la última descarga binaria 1.3.x OS X de 64 bits noche (debería volver a 1.2 estable, tal vez?)

¿Alguna idea de lo que está causando esto y qué puedo hacer para resolverlo? No es tan importante en mi máquina local pero necesito que funcione en modo seguro para que sea práctico para cualquier uso en producción en absoluto.


PD: si esto debe estar en ServerFault en lugar de SO, no dude en tenerlo trasladó allí. No estaba seguro de qué entorno adecuado es mejor.


Actualización:

He intentado funcionar sin autenticación, la adición de un usuario y volver a ejecutar la autenticación según lo recomendado por mdirolf y Mathias. Sin embargo, su todavía vomitando el mismo error. se añadió de la manera siguiente El usuario:

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

funcionamiento posterior sin auth y entrar en la consola mongo demostrar el usuario es de hecho todavía allí. ¿Estoy haciendo algo estúpido?

¿Fue útil?

Solución

Ahh, parece que ha encontrado un fallo en el maestro. He creado una caja para ella: http://jira.mongodb.org/browse/SERVER -474 .

Por favor, intente la mongodb recientemente publicado 1.2.0. maestro Git (rama 1.3.x) es no listo para su uso todavía.

Otros consejos

Es necesario tener ya un usuario en el administrador de base de datos antes de iniciar el servidor con --auth. Acabo de añadir una nota a los documentos de mencionar esto para que nadie más se sorprende.

Por cierto, la mayoría (si no todos) los despliegues de producción mongodb ejecutan sin autenticación. Recomendamos la autenticación de manejo en la aplicación y la configuración del servidor de seguridad en el servidor de base de datos para que sólo permita conexiones desde sus servidores web / app.

Es necesario añadir un usuario antes de comenzar con --auth. Empezar sin --auth y añadir un usuario, a continuación, reinicie con --auth.

La sección de seguridad se ha actualizado para describir esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top