2011-05-12 3 views
18

Раньше я хранил все файлы MongoDB данных в/вар/Библиотека/MongoDB directory..and запись DBPATH в /etc/mongodb.conf был/вар/Библиотека/MongoDB ..MongoDB

Теперь я хочу изменить каталог данных на /vol/db..so я создал каталог/vol/db и изменил разрешения с помощью sudo chown -R id -u/vol/db и изменил запись пути db в/vol/db в /etc/mongodb.conf

теперь, когда я начала MongoDB используя SUDO сервис MongoDB start..i я получаю эту ошибку в /var/log/mongodb/mongodb.log

http://pastebin.com/C0tv8HQN

Мне нужна помощь .. Где я ошибаюсь?

+0

Я использую sudo chown -R id -u/vol/db и sudo chown -R имя пользователя: username/vol/db –

+1

Можете ли вы вставить выходные данные ls -altrh/vol и ls -altrh/vol/db? – lobster1234

+0

У меня такая же проблема, можете ли вы ответить, если вы решили это? – zubinmehta

ответ

27

У меня была такая же проблема, но я смог ее решить благодаря similar question. Вы должны убедиться, что /vol/db/ принадлежит mongodb.

sudo chown -R mongodb:mongodb /vol/db/ 

Если вы получаете ошибку chown: invalid user: 'mongodb:mongodb', проверьте /etc/passwd, чтобы увидеть, если есть аналогичный пользователь, который существует (напр. mongod).

+2

Что делать, если я получаю недопустимую ошибку пользователя, и в файле/etc/passwd нет ничего похожего на – TMin

+0

, если мое имя службы 'mongod', какой будет мой пользователь: group? – Darpan

+0

, вероятно, mongod, попробуйте: группы mongod – igorludi

4

Если после изменения разрешений и права собственности на новый путь db вы все еще видите эту проблему, запустите getenforce, чтобы узнать, используете ли вы систему с запуском SELinux в режиме принудительного исполнения. Если getenforce возвращает «принудительное исполнение», вероятно, selinux является причиной ошибки разрешений, поскольку mongodb теперь работает за пределами исходной области контекста, поскольку местоположение db изменено вне/var/lib/...

Я не знаю «знаю подробностей, но грубая сила способ затем решить эту проблему без написания собственной политики SELinux для нового контекста просто отключить SELinux: -/

sudo setenforce 0 

в идеале, вы бы выяснить, как для обновления политики selinux, если вы планируете работать в процессе производства.

15

Легче будет

sudo chmod 777 /data/db 
+0

это сработало для меня .. когда я побежал sudo chown mongodb: mongoDB/vol/db я получил: «незаконное название группы» ... это решение работало – hanzolo

+0

Я получил то же самое, что и hanzolo. Этот работал для меня. – MLyck

+8

Эта команда даст очень открытые разрешения для рассматриваемого каталога.Ответ от @Kaezarrex ('sudo chown mongodb: mongodb/data/db') должен иметь желаемый эффект, не открывая разрешения так широко. –

1

Я предлагаю, чтобы проверить, что ошибка при чтении журнала Монго

tail -50 /var/log/mongodb/mongodb.log 

вы можете сразу же найти проблему (в том числе разрешения те)

0

Try следующие:

$ sudo chmod 755 /vol/db && sudo chown $USER /vol/db 
Смежные вопросы