Я пытаюсь настроить свой mongodb новомодный сценарий для работы арбитром, но у меня есть проблемы разрешения при попытке создать файл блокировки в каталоге данных:
Tue Apr 1 17:11:01 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/tmp/arb", journal: "true", logappe
nd: "true", logpath: "/var/log/mongodb/mongodb-arbiter.log", port: 27017, replSet: "rs1" }
Tue Apr 1 17:11:01 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /tmp/arb/mongod.l
ock errno:13 Permission denied Is a mongod instance already running?, terminating
Определенно нет никакого существующего файла блокировки и определенно нет никого другого mongod
выполнение процесса (ps -A | grep mongod
ничего не возвратит).
Также, когда я пытаюсь запуститься mongod
процесс
mongod --fork --port 27017 --dbpath /data/arb --replSet rs1 --logpath /var/log/mongodb.log
это также бросит ту же ошибку если не sudo
редактор.
Как я могу установить правильные полномочия для новомодного сценария для записи данных в /data/arb
?
У Вас должны быть полномочия на той папке (и все под ним) таким образом, что mongodb
пользователь может записать в него. Причина это работает с sudo
, состоит в том, потому что root
у пользователя есть те полномочия независимо от владельца/группы. На самом деле это может быть первопричиной здесь - когда Вы будете работать эти mongod
процесс с sudo, это создаст файлы с root:root
владение, к которому не может получить доступ нормальный mongodb пользователь.
user:group
для MongoDB на Ubuntu обычно mongodb:mongodb
, следовательно просто сделайте следующее:
cd /tmp/arb
sudo chown -R mongodb:mongodb .
, Так как Вы выполняете арбитра сюда, я также рекомендовал бы следующие опции в Вашем файле конфигурации (примечание: не для использования на регулярном узле переноса данных - только арбитр):
Эти настройки минимизируют место арбитра на хосте.