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 / inicial) provavelmente apenas dentro de outro diretório, como o diretório inicial '/root'.
Você precisa criar este diretório como root
Ou você precisa usar
sudo
, por exemplo. sudo mkdir -p /data/db
Ou você precisa fazer
su -
para se tornar superusuário e, em seguida, crie o diretório com mkdir -p /data/db
Observação:
O MongoDB também tem uma opção onde você pode criar o diretório de dados em outro local, mas isso geralmente não é uma boa ideia, porque apenas complica um pouco coisas como a recuperação de banco de dados, porque você sempre precisa especificar o caminho db manualmente. Eu não recomendaria fazer isso.
Editar:
a mensagem de erro que você está recebendo é "Não foi possível criar/abrir arquivo de bloqueio:/data/db/mongod.lock errno:13 Permission denied" . O diretório que você criou não parece ter as permissões e 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 ser)
$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/
O lado esquerdo 'drwxr-xr-x' mostra as permissões para o Usuário, Grupo e Outros. 'mongod mongod' mostra quem possui o diretório e a qual grupo esse diretório pertence. Ambos são chamados de 'mongod' neste caso.
Se seu diretório '/data/db' não tiver as permissões e propriedade acima, faça isso :
Primeiro, verifique qual usuário e grupo seu usuário mongo possui:
# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false
Você deve ter uma entrada para mongod em /etc/passwd , pois é um daemon.
sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db # using the user-id , group-id
Você também pode usar o nome do usuário e o nome do grupo, como segue:(eles podem ser encontrados em /etc/passwd e /etc/group )
sudo chown -R mongod:mongod /data/db
isso deve dar certo..
Nos comentários abaixo, algumas pessoas usaram isso:
sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db
ou
sudo chown -R $USER /data/db
sudo chmod -R go+w /data/db
A desvantagem é que $USER é uma conta que tem um shell de login. Os daemons idealmente não devem ter um shell por motivos de segurança, é por isso que você vê /bin/false no grep do arquivo de senha acima.
Confira aqui para entender melhor o significado das permissões do diretório:
http://www.perlfect.com/articles/chmod.shtml
Talvez também dê uma olhada em um dos tutoriais que você pode encontrar no Google:"UNIX para iniciantes"