MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongod reclama que não há pasta /data/db


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"