Estou tendo problemas ao iniciar o mongod como serviço:Como é possível que funcione quando faço sudo mongod -f /etc/mongod.conf mas ao iniciá-lo com sudo service mongod start recebo um erro no log
O
sudo
comando inicia mongod
com root
permissões (também conhecido como acesso de superusuário). Se você executar mongod
como um serviço o usuário e o grupo são configurados na definição do serviço (mongodb
para ambos no seu exemplo). Não há necessidade de executar o
mongod
processo como a root
usuário, e isso é fortemente desencorajado de acordo com a prática de segurança comum do Princípio de privilégio mínimo. Se você quiser testar uma configuração a partir da linha de comando, você pode usar
sudo
para executar com um usuário especificado em vez do usuário padrão (raiz). Por exemplo:
sudo -u mongodb mongod -f /etc/mongod.conf
Em geral, é melhor usar uma configuração de serviço em vez de executar
mongod
manualmente. Com a invocação manual, você também terá que se lembrar de incluir parâmetros como o caminho do arquivo de configuração (já que não há caminho de configuração padrão). Sem um arquivo de configuração, mongod
também usa opções padrão como um dbPath
de /data/db
.
Asserção:28595:13:Permissão negada src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
A causa provável de seus erros de permissão é ter iniciado anteriormente
mongod
como a root
do utilizador. Alguns diretórios e arquivos podem agora pertencer ao usuário root, então o mongodb
usuário não pode acessá-los. Seu erro específico está relacionado ao acesso a arquivos no diretório de dados (ou seja, o storage.dbPath
configurado em mongod.conf
). Assumindo que você não alterou os caminhos padrão em seu
mongod.conf
arquivo, você deve ser capaz de ajustar recursivamente as permissões para corresponder ao que o mongod.service
definição espera. Primeiro, verifique se você parou seu
mongod
instância se estiver em execução no momento. Em seguida, ajuste recursivamente as permissões para o usuário e grupo esperados:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Agora você deve ser capaz de iniciar o
mongod
como um serviço. Se o serviço não iniciar, deve haver mais detalhes no mongod
log (assumindo que o arquivo de log é gravável pelo mongodb
usuário do serviço).