OK, tudo se resume a permissões, mas vamos passo a passo. Quando você executa
sudo mongod
ele não carrega um arquivo de configuração, literalmente começa com o compilado nos padrões - porta 27017, caminho do banco de dados de /data/db etc. - é por isso que você recebeu o erro de não conseguir encontrar essa pasta. O "padrão do Ubuntu" é usado apenas quando você aponta para o arquivo de configuração (se você começar a usar o comando service, isso é feito para você nos bastidores). Em seguida você executou assim:
sudo mongod -f /etc/mongodb.conf
Se não havia problemas antes, então haverá agora - você executou o processo, com sua configuração normal (apontando para seu dbpath e log usuais) como usuário root. Isso significa que agora haverá vários arquivos nessa pasta normal do MongoDB com o usuário:grupo de
root:root
. Isso causará erros quando você tentar iniciá-lo como um serviço normal novamente, porque o usuário mongodb (o qual o serviço tentará executar) não terá permissão para acessar esses
root:root
arquivos e, mais notavelmente, provavelmente não será capaz de gravar no arquivo de log para fornecer qualquer informação. Portanto, para executá-lo como um serviço normal, precisamos corrigir essas permissões. Primeiro, certifique-se de que o MongoDB não esteja sendo executado como root, então:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
Isso deve corrigi-lo (assumindo que o user:group é
mongodb:mongodb
), embora provavelmente seja melhor verificar com um ls -al
ou similar para ter certeza. Feito isso, você poderá fazer com que o serviço seja iniciado com êxito novamente.