Estou usando meu novo mac pela primeira vez hoje. Estou seguindo o guia de introdução no mongodb.org até a etapa em que se cria o diretório / data / db. Aliás, eu usei a rota homebrew.
Então, abro um terminal e acho que estou no que você chamou de Diretório Inicial, pois quando eu faço "ls", vejo pastas de Documentos e Biblioteca de Filmes e aplicativos de área de trabalho Filmes e Imagens de filmes.
Então eu fiz um
mkdir -p /data/db
primeiro, diz permissão negada. Continuei tentando coisas diferentes por meia hora e finalmente:
mkdir -p data/db
trabalhou. e quando eu "ls", existe um diretório de dados e aninhado nele uma pasta db.
então eu inicio o mongod e ele reclama por não encontrar dados / db
Fiz algo errado?
Agora eu fiz o
sudo mkdir -p /data/db
e quando eu faço um "ls", vejo o diretório de dados e o diretório db. dentro do diretório db, porém, não há absolutamente nada nele e quando agora corro o mongod
Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit:
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now
EDIT Recebendo mensagem de erro para
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Obrigado a todos!
grep mongo /etc/passwd /etc/group
. Se isso não funcionar, verifique o nome verificando o proprietário do diretóriols -ld /var/lib/mongo
. Ou para ver o uid / gid fazer isso:ls -lnd /var/lib/mongo
. No meu casodrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- isso significa usar 487: 480 como o paramRespostas:
Você criou o diretório no lugar errado
/ data / db significa que está diretamente sob o diretório raiz '/', enquanto você criou 'data / db' (sem o / principal) provavelmente dentro de outro diretório, como o diretório doméstico '/ root'.
Você precisa criar este diretório como root
Você precisa usar
sudo
, por exemplosudo mkdir -p /data/db
Ou você precisa fazer
su -
para se tornar superusuário e criar o diretório commkdir -p /data/db
Nota:
O MongoDB também tem uma opção em que você pode criar o diretório de dados em outro local, mas isso geralmente não é uma boa ideia, porque apenas complica um pouco as coisas, como a recuperação do banco de dados, porque você sempre precisa especificar o caminho do db manualmente. Eu não recomendaria fazer isso.
Editar:
a mensagem de erro que você recebe é "Não é possível criar / abrir o arquivo de bloqueio: /data/db/mongod.lock errno: 13 Permissão negada" . O diretório que você criou não parece ter as permissões e a propriedade corretas - ele precisa ser gravável pelo usuário que executa o processo do MongoDB.
Para ver as permissões e a propriedade do diretório '/ data / db /', faça o seguinte: (é assim que as permissões e a propriedade devem se parecer)
O lado esquerdo 'drwxr-xr-x' mostra as permissões para o usuário, grupo e outros. 'mongod mongod' mostra quem é o proprietário do diretório e a qual grupo esse diretório pertence. Ambos são chamados de 'mongod' neste caso.
Se o diretório '/ data / db' não tiver as permissões e a propriedade acima, faça o seguinte :
Primeiro verifique qual usuário e grupo seu usuário mongo possui:
Você deve ter uma entrada para mongod em / etc / passwd, pois é um daemon.
Você também pode usar o nome de usuário e o nome do grupo, da seguinte maneira: (eles podem ser encontrados em / etc / passwd e / etc / group)
isso deve fazer funcionar ..
Nos comentários abaixo, algumas pessoas usaram isso:
ou
A desvantagem é que $ USER é uma conta que possui um shell de login. O ideal é que os daemons não tenham um shell por motivos de segurança, por isso você vê / bin / false no grep do arquivo de senhas acima.
Verifique aqui para entender melhor o significado das permissões do diretório:
http://www.perlfect.com/articles/chmod.shtml
Talvez também confira um dos tutoriais que você pode encontrar no Google: "UNIX para iniciantes"
fonte
ls -ld /data/
els -ld /data/db/
.. você verá as permissões de diretório listadas no lado esquerdo, a propriedade e o nome do diretório. você deve certificar-se de que os diretórios sejam graváveis pelo ID do usuário que executa o MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
esudo chmod 0777 /data/db/mongd.lock
. Ela começou logo.sudo chown -R `id -u` /data/db
ousudo chown -R $USER /data/db
em vez desudo chown mongod:mongod /data/db
fez o truque para mimDepois de receber o mesmo erro que Nik
Eu descobri isso aparentemente ocorreu de usar o tipo errado de aspas (deve ter sido crase ) Emotikongs
Em vez disso, eu apenas usei
como alternativa e agora o mongod tem as permissões necessárias.
fonte
Isso funciona para mim, encontrado nos comentários:
fonte
Crie a pasta
Permita-se para a pasta.
Então você pode correr
mongod
semsudo
. Funciona no OSX Yosemitefonte
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Para corrigir esse erro no OS X, reiniciei e parei o serviço:
$ brew services restart mongodb $ brew services stop mongodb
Então eu corri
mongod --config /usr/local/etc/mongod.conf
e o problema se foi.O erro pareceu surgir após a atualização do pacote homebrew do mongodb.
fonte
Instalando através do brew no Mac, em que YOUR_USER_NAME e a equipe são o grupo
fonte
/etc/passwd
nome de usuário - é provável que o grupo seja idêntico. Geralmente émongo
oumongodb
.Se você executar o mongo sem argumentos, presume-se que você esteja executando na máquina de produção, portanto use os locais padrão.
para usar seu próprio banco de dados (dev ou apenas um diferente):
fonte
Eu tive esse problema com uma instalação existente do Mongodb. Ainda não sei por que isso aconteceu, mas por algum motivo o processo Mongod não conseguiu encontrar o arquivo mongod.config. Como não foi possível encontrar o arquivo de configuração, ele tentou encontrar os arquivos do banco de dados em / data / db, uma pasta que não existia. No entanto, o arquivo de configuração ainda estava disponível, portanto, certifiquei-me de que o processo tenha permissões para o arquivo de configuração e execute o processo mongod com o sinalizador --config da seguinte maneira:
No próprio arquivo de configuração, eu tinha essa configuração:
E é assim que o processo pode encontrar a pasta DB real novamente.
fonte
eu fiz
em 2018-02-01 e isso me deu
mongodb
versão 3.6.2.Solicitado pela resposta do orluke acima, tentei apenas
e tudo surgiu na vida. Minha
mongoose.createConnection()
ligação fez o que eu queria. A GUI MongoDB Compass , a versão da comunidade, se conectaria. Usei o Compass para ver alocal.startup_log
coleção. Que tinha um documento, o meu logon apenas iniciando o serviço mongoDB, e que tinhae de fato havia um arquivo assim:
e houve um
/usr/local/var/mongodb
diretório com muitos arquivos obscuros. Então parece que é assim que a instalação funciona agora.Não tenho certeza se
brew services restart
define o serviço para ser executado no login. Então eu fize esperava que iniciasse novamente após a reinicialização. E, de fato, aconteceu. De fato, agora, acho que a coisa certa a fazer após a instalação inicial é
e isso deve iniciar o serviço e reiniciá-lo após a reinicialização.
fonte
Seu comando terá criado a estrutura de diretórios na pasta atual, não o diretório raiz do seu computador (que é o que está faltando).
/
).O primeiro comando estava correto, mas como você está tentando criar uma pasta
/
, que é um diretório protegido, é necessário prefixá-lo comsudo
, que é a abreviação de "superuser do". Você será solicitado a fornecer sua senha.Portanto, o comando completo seria:
fonte
Você precisa criar / data / db ... que é um diretório chamado / data / em sua raiz (ou seja, / ) e uma subpasta chamada / db / ...
Você está recebendo erros de permissão porque precisa usar o sudo para criar um diretório no diretório raiz do MacOS, o sudo permite executar comandos como administrador.
Então, execute isso em vez disso ...
Isso solicitará uma senha, é a mesma senha usada para alterar as configurações do sistema (aquela pequena caixa de diálogo que é aberta quando você tenta alterar as coisas nas Preferências do Sistema, por exemplo) e provavelmente a mesma que você usa para fazer login.
fonte
Você está tentando criar um diretório ao qual não tem acesso root.
Para testar o mongodb, eu apenas uso um diretório do meu diretório de usuário como:
Isso criará um banco de dados mongo em temp / do seu diretório de trabalho atual
fonte
Eu superei exatamente esse mesmo problema criando as pastas / data / db com o meu gerenciador de janelas. Tentei fazê-lo através do terminal a princípio e, para criar uma pasta no diretório raiz, tive que usar o sudo.
Eu apenas fui ao diretório raiz usando o Finder e criei uma nova pasta usando 'Nova Pasta'. Totalmente funcionou para mim.
Nota: estou usando o OSX.
fonte
Apenas uma nota rápida:
Se você tentou executar o mongod sem alterar as permissões primeiro, provavelmente terá um arquivo mongod.lock (e alguns outros arquivos) no diretório / data / db. Mesmo depois de alterar as permissões do diretório / data / db para dar acesso ao seu $ USER, você continuará recebendo a mensagem "Não foi possível criar / abrir o arquivo de bloqueio: /data/db/mongod.lock errno: 13 Permissão negada "erro. Execute ls -al / data / db e provavelmente verá que as permissões para os arquivos individuais ainda estão definidas como raiz para o usuário, não para o seu $ USER. Você deve remover o arquivo mongod.lock e os outros também. Então, quando você executa o mongod novamente, tudo deve funcionar e você pode verificar se as permissões do arquivo correspondem às permissões do diretório executando ls -al novamente.
fonte
Criar diretório na raiz
Agora mude o proprietário
Você está pronto para ir!
em vez de usar
sudo mongod
, você não precisa colocar uma senha permanente, mas para o projeto real que você deve usarsudo mongod
, não dê permissão ao usuário normal!fonte
Eu continuei recebendo o seguinte erro ao tentar iniciar o mongodb.
Eu estava usando o seguinte comando:
A correção para mim foi que eu não precisava do sinal "=" e isso estava causando o erro. Então eu fiz
Só queria jogar isso lá fora, porque o erro de forma alguma especifica que este é o problema. Eu quase removi o conteúdo do diretório ~ / mongo-data para ver se isso ajudou. Ainda bem que lembrei que os clientes às vezes não usam o sinal "=".
fonte
Até essa data, eu também pensava que precisamos criar essa pasta / data / db para iniciar o comando mongod.
Mas, recentemente, tentei iniciar o mongod com o comando service e funcionou para mim e não havia necessidade de criar o diretório / data / db.
Para verificar o status do mongod, você pode executar o seguinte comando.
fonte
Esta solução resolve meu problema
Crie um diretório como
sudo mkdir -p / data / db
Isso criará um diretório chamado db e tentará iniciar com comandos
sudo mongod
Se você receber outro erro ou problema ao iniciar o mongod, poderá encontrar um problema como
e encontre o mongod em execução na porta e mate o processo. Outra maneira é criar uma porta específica ao iniciar o mongod como
fonte
Digite "id" no terminal para ver os IDs de usuário disponíveis que você pode fornecer. Em seguida, basta digitar
"sudo chown -R idname / data / db"
Isso funcionou para mim! Espero que isso resolva seu problema.
fonte
Nas versões mais atuais do MongoDB, tenho 3.2.10, ele é armazenado como padrão no
/var/lib/mongodb
fonte
mongod --dbpath /var/lib/mongodb
ajuda nestas circunstânciasDepois de (re) instalar o pacote de ferramentas, recebi um erro semelhante em um dispositivo Windows 10;
Solução Analógica conforme explicada nos sistemas Linux: basta criar a pasta para poder iniciar o
mongod.exe
(servidor mongoDB).Achei que poderia deixar para as pessoas que acabam aqui com os mesmos termos de pesquisa em um dispositivo Windows.
fonte
Eu só queria salientar aqui que, se você tentar isso e se deparar com
mkdir: /data/db: Read-only file system
, por favor, veja este comentário, que me ajudou: https://stackoverflow.com/a/58895373 .Dessa forma, se alguém estiver nessa resposta e fizer o Controle F como "somente leitura", eles verão isso
fonte
Existe uma maneira realmente idiota de criar esse problema, do qual fui pioneiro:
1) deixe a instalação do mongo por um tempo 2) volte e o servidor não está funcionando 3) tente iniciá-lo, mas não use o sudo desta vez 4) o mongo não consegue encontrar dados / db / porque agora está procurando o diretório inicial do usuário em vez de su home dir
Sim, é realmente idiota, mas se já faz um tempo desde que você estava no sistema, pode enganá-lo.
Resposta curta: certifique-se de executar o mongo com o mesmo diretório inicial implícito
fonte