Почему я не могу начать mongodb
это ошибка:
(mysite)[email protected]:~$ /usr/local/mongodb/bin/mongod
/usr/local/mongodb/bin/mongod --help for help and startup options
Wed Apr 27 10:02:41 [initandlisten] MongoDB starting : pid=2652 port=27017 dbpath=/data/db/ 32-bit
** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
** see http://blog.mongodb.org/post/137788967/32-bit-limitations
** with --dur, the limit is lower
Wed Apr 27 10:02:41 [initandlisten] db version v1.8.1, pdfile version 4.5
Wed Apr 27 10:02:41 [initandlisten] git version: a429cd4f535b2499cc4130b06ff7c26f41c00f04
Wed Apr 27 10:02:41 [initandlisten] build sys info: Linux bs-linux32.10gen.cc 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37
Wed Apr 27 10:02:41 [initandlisten] exception in initAndListen std::exception: Unable to create / open lock file for lockfilepath: /data/db/mongod.lock errno:13 Permission denied, terminating
Wed Apr 27 10:02:41 dbexit:
Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close listening sockets...
Wed Apr 27 10:02:41 [initandlisten] shutdown: going to flush diaglog...
Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close sockets...
Wed Apr 27 10:02:41 [initandlisten] shutdown: waiting for fs preallocator...
Wed Apr 27 10:02:41 [initandlisten] shutdown: closing all files...
Wed Apr 27 10:02:41 closeAllFiles() finished
Wed Apr 27 10:02:41 [initandlisten] shutdown: removing fs lock...
Wed Apr 27 10:02:41 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Wed Apr 27 10:02:41 dbexit: really exiting now
Ответы
Ответ 1
Учетная запись пользователя, которая запускает MongoDB, должна иметь права на запись в каталог /data/db/
... вы можете изменить это так...
Эта команда изменит владельца /data/db/
на используемую учетную запись пользователя.
$ sudo chown `id -u` /data/db
$ mongod
Если у вас все еще возникают проблемы с запуском MongoDB, вам нужно удалить /data/db/mongod.lock
, а затем запустить восстановление в вашей базе данных...
mongod --repair
Подробнее о команде восстановления здесь.
Ответ 2
Либо sudo
вызов mongod
, либо изменение разрешений /data/db/mongod.lock
, чтобы он был доступен для записи.
Ответ 3
Я разрешил это, сделав chown на mongodb, т.е.
sudo chown -R mongodb:mongodb /data
Это потому, что, когда вы делаете
ls -lrth /data
drwxr-xr-x 2 mongodb mongodb 6 Jan 5 02:31 journal
-rwxr-xr-x 1 mongodb mongodb 0 Jan 5 02:31 mongod.lock
drwxr-xr-x 2 ubuntu root 24 May 8 20:02 configdb
Надеюсь, что это поможет.
Ответ 4
Убедитесь, что у вас нет экземпляра mongod.
Это то, что сработало для меня. Я проверил, чтобы увидеть, был ли экземпляр, запущенный в фоновом режиме, сначала, глядя в терминал следующим образом: ps aux | grep mongo
и я увидел, что было: 48358 bla bla mongod
поэтому я его убил: kill 48358
а затем я смог запустить его нормально.
Ответ 5
Вот, как я его решил
- После удаления файла блокировки я отремонтировал его с помощью
sudo mongod --repair --config=/etc/mongodb.conf
,
После этого я проверил разрешение mongod.lock с помощью ls -l /var/lib/mongodb/mongod.lock
- он показывал, что root является владельцем файла блокировки, поэтому я изменил его обратно на mongodb с помощью
sudo chown mongodb:mongodb /var/lib/mongodb/*
- затем перезапустите службу mongodb, используя
sudo service mongodb restart
Ответ 6
Если вы хотите спасти члена набора реплик не, используйте описанные выше методы. Вместо этого используйте процедуры, описанные в ReSync-документации MongoDB.
Ответ 7
В Mac OSX Yosemite после стандартной установки с помощью brew:
sudo chown -R `id -u` /data/db
если он не запускается (проверьте, нет ли висячих и блокирующих соединений):
lsof -i:27017
выводит что-то вроде:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 16948 andi 8u IPv4 0x883a71bc9412939d 0t0 TCP *:27017 (LISTEN)
принять значение PID
и запустить:
kill -9 <PID>
теперь вы можете запустить mongo-сервер: mongod
, а затем, например, в отдельном окне консоли, подключитесь к нему с помощью mongo