Разрешения каталога данных mongodb
Раньше я хранили все файлы данных mongodb в каталоге /var/lib/mongodb.. и запись dbpath в файле /etc/mongodb.conf была/var/lib/mongodb..
Теперь я хочу изменить каталог данных на/vol/db..так я создал каталог /vol/db и изменил разрешения с помощью sudo chown -R id -u
/vol/db и изменил запись пути db на /vol/db в файле /etc/mongodb.conf
теперь, когда я запускаю mongodb, используя sudo service mongodb start..i получаю эту ошибку в /var/log/mongodb/mongodb.log
http://pastebin.com/C0tv8HQN
Мне нужна помощь. Где я ошибаюсь?
Ответы
Ответ 1
У меня была такая же проблема, но я смог решить ее благодаря аналогичному вопросу. Вы должны убедиться, что /vol/db/
принадлежит mongodb
.
sudo chown mongodb:mongodb /vol/db/
Если вы получите сообщение об ошибке chown: invalid user: 'mongodb:mongodb'
, отметьте /etc/passwd
, чтобы узнать, существует ли аналогичный пользователь (например, mongod
).
Ответ 2
Самый простой был бы
sudo chmod 777 /data/db
Ответ 3
Если после изменения разрешений и права собственности на новый путь db вы все еще видите эту проблему, запустите getenforce
, чтобы узнать, используете ли вы систему с запуском SELinux в режиме принудительного исполнения.
Если getenforce возвращает "принудительное исполнение", вероятно, selinux является причиной ошибки разрешений, поскольку mongodb теперь работает за пределами исходной области контекста, поскольку местоположение db изменено вне /var/lib/...
Я не знаю подробностей, но вместо этого, чтобы решить проблему, не создавая собственную политику selinux для нового контекста, просто отключите selinux: -/
sudo setenforce 0
В идеале вы узнаете, как обновить политику selinux, если вы планируете работать в процессе производства.
Ответ 4
Я предлагаю проверить, что такое ошибка, прочитав журнал mongo
tail -50 /var/log/mongodb/mongodb.log
вы можете сразу найти проблему (включая разрешения)
Ответ 5
Попробуйте следующее:
$ sudo chmod 755 /vol/db && sudo chown $USER /vol/db