Я создал / 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

whinytween96

Ответов: 16

Ответы (16)

Хорошие решения, но мне интересно, почему никто не предлагает решения для windows.

Если вы используете Windows, вам просто нужно запустить команду «Запуск от имени администратора».

На Mac мне пришлось сделать следующее:

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

because there was also a file inside /tmp which Mongo also needed access

С такой же проблемой разбирался:

Перейдите в каталог MongoDB, который содержит каталог bin, и запустите:

sudo bin/mongod 

При запуске MongoDB от имени пользователя root вас могут попросить ввести пароль root. Если вы по-прежнему не можете запустить MongoDB, проверьте разрешения для каталога данных MongoDB. Введите:

ls -ld /data

или введите ls -l / для получения разрешений для всех каталогов и файлов в каталоге, включая каталог / data.

Режим разрешений для пользователя root должен быть «rwx», что означает, что пользователь root может читать, писать и выполнять файлы. Для этого мы используем:

chmod 755 /data 

755 - это восьмеричное обозначение для установки разрешений каталога / data на «rwxr-xr-x», что означает пользователя root. могут читать, писать и выполнять, тогда как «группа» и «все» могут только читать и выполнять.

Примечание: если вы не можете этого сделать, введите вместо этого:

sudo chmod 755 /data   

, чтобы установить права пользователя root.

Затем, когда вы закончите с этим шагом, повторно захватите режимы разрешений, используя:

ls -ld /data

что должно выглядеть так:

drwxr-xr-x  3 root  wheel  102 Mar  3 17:00 /data

Вам не нужно беспокоиться о «d» в начале, и обратите внимание, что разрешения отражают «rwxr-xr-x».

Теперь вы можете вернуться в каталог MongoDB и ввести:

sudo bin/mongod  

для запуска MongoDB.

Это сработало для меня в Ubuntu LTS 20.04:

$ sudo service mongod start

вам просто нужно запустить команду от имени суперпользователя:

просто введите с терминала: sudo su mongod

Исправьте разрешения / data / db (или / var / lib / mongodb):

sudo chown -R mongodb: /data/db

затем перезапустите MongoDB, например. используя

sudo systemctl restart mongod

Если это не помогает, проверьте сообщение об ошибке, если вы используете каталог данных, отличный от / var / lib / mongodb. В этом случае запустите

sudo chown -R mongodb: 

источник

Если вам не нужно иметь каталоги базы данных в корне, вы можете создать data / db в своем домашнем каталоге (mkdir -p ~ / data / db).

Затем вы можете запустить сервер MongoDB с параметром - dbpath:

mongod --dbpath=$(echo ~)/data/db

(Предполагается, что вы запускаете его с терминала. По какой-то странной причине mongod не принимает ~ в качестве пути к домашнему каталогу, следовательно, обман bash echo подстановки, вы также можете написать/ home / yourusername / data / db)

На самом деле, это не обязательно должно быть ~ / data / db, оно может быть где угодно, и таким образом у вас может быть несколько путей к базе данных и все хорошо организовать. Может быть, это не лучший вариант для производства (в зависимости от того, что вы хотите сделать), но для разработки работает нормально.

неправильная причина:

Нет разрешения на работу с папкой / data / db,

в настоящее время эта папка только для чтения.

Решение:

1. Изменить разрешения: убедитесь, что текущий пользователь имеет права на чтение и запись в / data / db папку

sudo chown -r your-user-name /data/db

2. Создайте путь к базе данных в другом месте и измените путь к базе данных MongoDB. например:

На самом деле я планировал поместить путь к базе данных так, чтобы он всегда был виден.

Я использовал второй способ напрямую

# Сначала создайте каталог для хранения базы данных,

Я построил его в ~ / Documents / mongodb / data

# При запуске в будущем введите следующую команду для ok

mongod --dbpath ~/Documents/mongodb/data

дополнительно, При настройке глобальных переменных в MongoDB могут возникнуть следующие проблемы:

например:

1. Терминал по умолчанию в системе обычно bash, но я использую zsh

Тогда ясно, что нам нужно сделать:

Нам нужно навсегда установить системные переменные окружения в zsh.

При запуске zsh сначала будет прочитан файл конфигурации ~ / .zshrc,

, чтобы мы могли поместить информацию о конфигурации переменных среды в этот файл конфигурации

vi ~/.zshrc

Add export PATH=/usr/local/mongodb/bin:$PATH

2. Адрес хранения базы данных по умолчанию для mongodb: / data / db,

, что требует от нас создания вручную sudo mkdir -p / data / db

Затем запускаем сервис (запускаем сервер)

mongod

Если вы видите подсказку [Ожидание подключения 27017],

ваша служба базы данных была запущена

(хотя есть и некритические предупреждения)

или

Отображение интерфейса, ожидающего подключения клиента, означает, что запуск прошел успешно.

Если это не удалось, проверьте расположение папки / data / db.

Если не работает, удалите и создайте новый.

Откройте браузер, введите localhost: 27017 или 127.0.0.1: 27017,

и появится строка вроде этой Word.

It looks like you are trying to access MongoDB over HTTP on the native driver port.

3. Войдите в командную операцию MongoDB

Снова откройте командную строку и введите

mongo

Базой данных можно управлять, и теперь мы можем выполнять операции, связанные с базой данных, такие как выполнение

show dbs

Если вы хотите остановить MongoDB, вы должны выйти правильно,

иначе в следующий раз будут проблемы с подключением к базе.

Используйте следующие две строки кода для завершения этой операции.

use admin;
db.shutdownServer();

4. Наконец,

инструмент визуализации RoboMongo

Вы можете выбрать ту версию, которая вам подходит для скачивания.

Другое,

Если вы пользователь Mac, вы загрузите сжатый файл MongoDB TGZ,

распакованный, поместить распакованный файл в / usr / local,

по умолчанию в Finder вы не видите / usr этот каталог (используются терминалы Пожалуйста, будьте опытны),

вы можете увидеть этот скрытый каталог после того, как сможете использовать Shift + Command + G input / usr / local.

Более того, что делать, если соединение с MongoDB не удается?

В основном из-за аварийного выключения в прошлый раз был сгенерирован файл блокировки, просто удалите файл блокировки.

sudo rm /data/db/mongod.lock

Что делать, если выполнение команды sudo mongod зависло?

На самом деле не завис, а запустился.

Это окно нельзя закрыть.

Если вы откроете новое окно, вы обнаружите, что можете выполнить команду sudo mongo.

Как избежать этой проблемы?

Примечание: если вы хотите остановить MongoDB, вы должны выйти правильно,

иначе в следующий раз будут проблемы с подключением к базе.

Используйте следующие две строки кода для завершения этой операции. Снова:

use admin;
db.shutdownServer();

Если вы не загружаете MongoDB и используете Mac, просто откройте терминал, используйте команду для перехода в каталог:cd / usr / local, и воспользуемся командой для скачивания через руки:

sudo curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.X.X.tgz

уведомления: 4.X.X, версия MongoDB.

Более того, если скачать stuiod3t-2019030.dmg для macOS,

Взломайте, что:

  1. Установить dmg файл;

  2. Открыть файл после установки;

  3. Установите каталог, как показано на рисунке, и перетащите загруженный data-man-mongodb-ent-2019.3.0.jar в исходный и перезапишите его;

  4. Окончательное исполнение

    sudo spctl --master-disable

Готово ~.

(stuiod3t-2019030.dmg для взлома macOS: https://blog.csdn.net/m0_49337600/article/details/111415870)

Если ваша система использует SELinux, убедитесь, что вы используете правильный контекст для созданного вами каталога:

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

и клонируйте контекст с помощью:

chcon -R --reference=/var/lib/mongo /data/db

Если вы используете Windowsи пытаетесь настроить MongoDB, запустите cmd, поскольку Admnistrator - это путь вперед, поскольку Enrique предложено выше см. Здесь

У меня возникла та же проблема, и следующее решение решило эту проблему. Вам следует попробовать следующее решение.

sudo mkdir -p / data / db
sudo chown -R 'имя пользователя' / data / db

Проверить, включен ли 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

Проблема в том, что созданный вами каталог / data / db принадлежит и доступен для записи только пользователю root, но вы запускаете mongod от имени себя. Есть несколько способов решить эту проблему, но в конечном итоге вы должны предоставить соответствующему каталогу правильные разрешения. Если это для производства, я бы посоветовал вам проверить документацию и хорошенько подумать - вы, вероятно, захотите проявить особую осторожность.

Однако, если это просто для тестирования, и вам просто нужно, чтобы это работало и продолжало с этим, вы можете попробовать это, что сделает каталог доступным для записи всем:

> sudo chmod -R go+w /data/db

или это, что сделает каталог принадлежащим вам:

> sudo chown -R $USER /data/db

enter image description hereПрежде всего остановите все службы mongoDB, затем создайте каталог на /, это означает root, если у вас нет , а также удалите файл порта. дайте все разрешения этому каталогу, станьте владельцем этого каталога, выполните команду ниже:

sudo service mongod stop
sudo rm -rf /tmp/mongod*
sudo mkdir -p /data/db
sudo chmod -R a+wxr /data
sudo chown -R $USER:$USER /data

Теперь все готово, просто запустите службу MongoDB, если не помогло, попробуйте изменить порт, например:

sudo service mongod restart && mongod # if didn't help run below cmd
mongod --port 27018

Примечание: Для меня все это работает, и я надеюсь, что сработает и для вас, парень!

Если вы проверяете свои журналы mongodb и получаете такую ​​ошибку, просто выполните шаги, как я. Это происходит из-за проблем с разрешениями в вашем каталоге / data / db. Я использую ubuntu16.04 и нахожу решение, выполнив две простые команды, как показано ниже.

Шаг 1: Дайте разрешение на каталог / data / db:

sudo chmod -R 0777 /data/db

Шаг 2: Попробуйте запустить службу mongod как:

sudo service mongod start

Шаг 3: Проверить статус сервиса mongod:

sudo service mongod status

Большинство методов установки mongo создают пользователя mongodb. Если у вас есть этот пользователь, вы должны использовать его, а не просто взламывать разрешения, пока все не заработает ...

cat /etc/passwd | grep mongo

Попытка запустить mongodb от имени root - плохая идея, и попытка запустить его от имени обычного пользователя даст вам такие сообщения об ошибках, которые вы видите. Используйте параметр -u для sudo для запуска программ от имени другого пользователя.

sudo -u mongodb mongod --dbpath /what/ever/

Кроме того, различные инструкции и руководства требуют, чтобы вы остановили mongod, внесли некоторые изменения, а затем перезапустили его. В зависимости от того, как вы останавливаете mongod, его файл блокировки может все еще томиться в tmp, поэтому убедитесь, что он исчез, прежде чем пытаться перезапустить демон ...

sudo rm /tmp/mongodb-27017.sock

2022 WebDevInsider