Pergunta

Eu estou tentando descobrir o MongoDB, a fim de avaliar se é uma rota que eu gostaria de aproveitar para aplicações futuras ou não. A fim de implantá-lo de forma sensata no meu servidor, eu teria de executá-lo com autenticação ativada (ou seja, com o argumento --auth ou com auth = true no arquivo de configuração).

A instalação parece relativamente straightfoward e eu ter sido de prosseguir com a ajuda da documentação, quando necessário. Em particular, o seção sobre segurança faz um trabalho muito bom de explicar o processo de execução com auth habilitado e inserir o seu primeiro usuário administrador. No entanto, as coisas não procedeu de acordo com o plano.

Running sem auth produz o resultado seria de esperar - ele é executado, com o seguinte 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

No entanto, executando com de autenticação (usando métodos, arg ou directiva config) produz o seguinte resultado eo processo imediatamente saídas:

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 observado nas tags, este está em execução no OS X Snow Leopard e está usando a última 1.3.x noturno OS X 64 bits binário download (eu deveria reverter para 1,2 estável talvez?)

Qualquer idéia do que está causando isso eo que posso fazer para resolver isso? Não é tão importante na minha máquina local, mas eu preciso dele para trabalhar em modo seguro para torná-lo prático para qualquer uso em produção em tudo.


PS: se este deve estar em ServerFault vez de SO, não hesite em tê-lo mudado para lá. Eu não tinha certeza que o ambiente adequado que é melhor.


Update:

Eu tentei correr sem auth, adicionar um usuário e executar novamente com auth como recomendado pelo mdirolf e Mathias. No entanto, o seu ainda vomitar o mesmo erro. O utilizador foi adicionado da maneira seguinte:

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

running subsequente sem auth e entrar na shell mongo provar o usuário é na verdade ainda está lá. Estou fazendo algo estúpido?

Foi útil?

Solução

Ahh, parece que você encontrou um bug no mestre. Eu criei um caso para ele: http://jira.mongodb.org/browse/SERVER -474 .

Por favor, tente o MongoDB recentemente lançado 1.2.0. mestre Git (1.3.x ramo) é não pronto para ser utilizado ainda.

Outras dicas

Você precisa já tem um usuário no DB administrador antes de iniciar o servidor com --auth. Acabei de adicionar uma nota para os docs de mencionar isso para que ninguém mais se surpreende.

A propósito, a maioria (se não todos) implementações do MongoDB produção executado sem auth. Recomendamos manipulação de autenticação no seu aplicativo e configurar o firewall em seu servidor de banco de dados para permitir apenas conexões a partir de seus servidores web / app.

Você precisa adicionar um usuário antes de começar com --auth. Iniciar sem --auth e adicionar um usuário, reinicie com --auth.

A seção de segurança foi atualizado para descrever isto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top