Я создал /data/db
в корневом каталоге и запустил ./mongod
:
[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100
ls -ld /data/db
иid
так можем посоветовать.-ld
роль :)drwxrwxrwx. 4 mongod mongod 4096 Sep 17 18:18 /data/db
и я все еще получаю сообщение об ошибке. Любые идеи?Ответы:
Проблема в том, что созданный вами каталог
/data/db
принадлежит и доступен для записи только пользователю root, но вы запускаете mongod от имени себя. Есть несколько способов решить эту проблему, но в конечном итоге вы должны предоставить соответствующему каталогу правильные разрешения. Если это для производства, я бы посоветовал вам проверить документацию и тщательно обдумать это - вы, вероятно, захотите проявить особую осторожность.Однако, если это просто для тестирования, и вам просто нужно, чтобы это работало и продолжало с этим, вы можете попробовать это, что сделает каталог доступным для записи всем:
или это, что сделает каталог принадлежащим вам:
источник
-R
изменить все/data/db
файлы внутри.chmod
сгенерировало новую ошибкуinitAndListen : operation not permitted
, ноchown
сработало.chmod -R 755 /data/db
На Mac мне пришлось сделать следующее:
потому что был также файл, внутри
/tmp
которого Монго также нуждался в доступеисточник
Если ваша система использует SELinux, убедитесь, что вы используете правильный контекст для созданного вами каталога:
ls -dZ /data/db/ ls -dZ /var/lib/mongo/
и клонировать контекст с помощью:
chcon -R --reference=/var/lib/mongo /data/db
источник
У меня возникла та же проблема, и следующее решение решило эту проблему. Вам следует попробовать следующее решение.
источник
Прежде всего остановите все службы mongoDB , затем создайте каталог
/
, то есть root, если у вас его нет, а также удалите файл порта. предоставьте все разрешения этому каталогу, станьте владельцем этого каталога, выполните команду ниже:Теперь все готово, просто запустите службу MongoDB, если не помогло, попробуйте изменить порт, например:
sudo service mongod restart && mongod # if didn't help run below cmd mongod --port 27018
Примечание: для меня все это работает, и я надеюсь, что сработает и для вас, парень!
источник
Исправьте разрешения
/data/db
(или/var/lib/mongodb
):sudo chown -R mongodb: /data/db
затем перезапустите MongoDB, например, используя
Если это не помогает, проверьте сообщение об ошибке, если вы используете каталог данных, отличный от / var / lib / mongodb. В этом случае запустите
sudo chown -R mongodb: <insert your data directory here>
источник
источник
Хорошие решения, но мне интересно, почему никто не предлагает решения для окон.
Если вы используете Windows, вам просто нужно «Запускать от имени администратора» cmd.
источник
Если вы проверяете свои журналы mongodb и получаете такую ошибку, просто выполните шаги, как я. Это происходит из-за проблем с разрешениями в вашем
/data/db
каталоге. Я использую ubuntu16.04 и нахожу решение, выполнив две следующие простые команды.Шаг 1. Дайте разрешение каталогу / data / db:
sudo chmod -R 0777 /data/db
Шаг 2: Попробуйте запустить службу mongod как:
Шаг 3: проверьте статус службы mongod:
источник
Я имел дело с той же проблемой:
Перейдите в каталог MongoDB, который содержит
bin
каталог, и запустите:При запуске MongoDB от имени пользователя root вас могут попросить ввести пароль root. Если вы по-прежнему не можете запустить MongoDB, проверьте разрешения для каталога данных MongoDB. Войти:
или введите
ls -l /
разрешения для всех каталогов и файлов в каталоге, включая/data
каталог.Режим разрешений для пользователя root должен быть "
rwx
", что означает, что пользователь root может читать, записывать и выполнять файлы. Для этого мы используем:chmod 755 /data
755
представляет собой восьмеричное обозначение для установки разрешений/data
каталога на «rwxr-xr-x
», что означает, что пользователь root может читать, писать и выполнять, тогда как «группа» и «все» могут только читать и выполнять.Примечание. Если вы не можете этого сделать, введите вместо этого:
sudo chmod 755 /data
чтобы установить разрешение как пользователь root.
Затем, когда закончите с этим шагом, повторно захватите режимы разрешений, используя:
который должен выглядеть так:
drwxr-xr-x 3 root wheel 102 Mar 3 17:00 /data
Вам не нужно беспокоиться о "
d
" в начале, и обратите внимание, что разрешения отражают "rwxr-xr-x
".Теперь вы можете вернуться в каталог MongoDB и ввести:
для запуска MongoDB.
источник
Если вам не нужно, чтобы каталоги базы данных были в корне, вы можете создать их
data/db
в своем домашнем каталоге (mkdir -p ~/data/db
).Затем вы можете запустить сервер MongoDB с
--dbpath
опцией:(Предполагается, что вы запускаете его с терминала. По какой-то странной причине
mongod
не принимает ~ в качестве пути к домашнему каталогу, поэтому вы также можете написать обман bash echo/home/yourusername/data/db
)Фактически, это не обязательно
~/data/db
, это может быть где угодно, и таким образом у вас может быть несколько путей к базе данных и все хорошо организовать. Возможно, это не лучший вариант для производства (в зависимости от того, что вы хотите сделать), но для разработки работает нормально.источник
вам просто нужно запустить команду от имени суперпользователя:
просто введите с терминала: sudo su mongod
источник
Если вы используете Windows и пытаетесь настроить MongoDB, запустите cmd, поскольку Admnistrator - это путь вперед, как предложил Энрике выше, см. Его здесь
источник
Это сработало для меня в Ubuntu LTS 20.04:
источник
Проверьте, включен ли SElinux. Если он находится в принудительном режиме, просто попробуйте разрешающий режим. В случае, если это поможет, вам следует создать политики SElinux для mongodb.
Вы можете попробовать с помощью audit2allow - проверьте https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow
источник