MongoDB无法通过`service mongod start`命令启动

时间:2018-07-05 06:43:00

标签: mongodb

当我运行命令sudo service mongod start时,MongoDB无法启动,当我运行服务mongod状态时,表明它尚未启动,并且日志显示:

2018-07-05T14:32:03.595+0800 I CONTROL  [main] ***** SERVER RESTARTED *****
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] MongoDB starting : pid=15656 port=27017 dbpath=/var/lib/mongodb 64-bit host=iZbp1ik57sceo226yjpivxZ
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] db version v4.0.0-rc7
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] git version: 7230641bb09b1ceb04c3135cf83a5044c4838906
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] modules: none
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] build environment:
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     distarch: x86_64
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "0.0.0.0", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] Detected data files in /var/lib/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten]
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=488M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204155][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204155][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204458][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204458][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204610][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204610][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 F STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
2018-07-05T14:32:04.204+0800 F STORAGE  [initandlisten] 13: Permission denied
2018-07-05T14:32:04.204+0800 F -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 194
2018-07-05T14:32:04.204+0800 F -        [initandlisten]
***aborting after fassert() failure

但是当我尝试mongod --auth -f /etc/mongod.conf时,服务器可以启动,并且在访问日志文件时显示:

2018-07-05T14:35:34.228+0800 I CONTROL  [main] ***** SERVER RESTARTED *****
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] MongoDB starting : pid=15665 port=27017 dbpath=/var/lib/mongodb 64-bit host=iZbp1ik57sceo226yjpivxZ
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] db version v4.0.0-rc7
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] git version: 7230641bb09b1ceb04c3135cf83a5044c4838906
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] modules: none
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] build environment:
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     distarch: x86_64
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "0.0.0.0", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] Detected data files in /var/lib/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten]
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=488M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-07-05T14:35:35.005+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:5560][15665:0x7f0ab9512a00], txn-recover: Main recovery loop: starting at 18/8960
2018-07-05T14:35:35.113+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:113878][15665:0x7f0ab9512a00], txn-recover: Recovering log 18 through 19
2018-07-05T14:35:35.179+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:179582][15665:0x7f0ab9512a00], txn-recover: Recovering log 19 through 19
2018-07-05T14:35:35.248+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:248647][15665:0x7f0ab9512a00], txn-recover: Set global recovery timestamp: 0
2018-07-05T14:35:35.283+0800 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
2018-07-05T14:35:35.311+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-07-05T14:35:35.311+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7856 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.336+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data'
2018-07-05T14:35:35.337+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

,整个配置文件如下:

# mongod.conf
# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
journal:
  enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
security:
  authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

那么,这是怎么回事?为什么第一种方法不能运行它,而第二种方法可以启动它?

3 个答案:

答案 0 :(得分:5)

根据@Markus W Mahlberg,运行这些命令后,问题已解决。 [sudo] chown mongodb.mongodb -R /var/lib/mongodb

答案 1 :(得分:1)

如果您在测试配置文件时以root用户身份在服务器上运行命令mongod,例如:

$ mongod -f /etc/mongod.conf

mongo服务器将在mongodb文件夹中以root:root所有权生成mongo.lock文件和WiredTiger.lock文件以及其他文件,如下所示:

-rw-------  1 mongodb mongodb      36864 Nov 25 12:03 index-95--8062076833940689665.wt
-rw-------  1 mongodb mongodb      45056 Nov 25 12:03 index-96--8062076833940689665.wt
-rw-------  1 mongodb mongodb      36864 Nov 25 12:03 index-99--8062076833940689665.wt
drwx------  2 mongodb mongodb       4096 Nov 25 15:23 journal/
-rw-------  1 mongodb mongodb      45056 Nov 25 15:32 _mdb_catalog.wt
-rw-------  1 root    root             0 Nov 25 15:32 mongod.lock
-rw-------  1 mongodb mongodb      36864 Nov 25 15:32 sizeStorer.wt
-rw-------  1 mongodb mongodb        114 Oct 17 17:41 storage.bson
-rw-------  1 mongodb mongodb         44 Oct 17 17:41 WiredTiger
-rw-------  1 mongodb mongodb       4096 Nov 25 15:32 WiredTigerLAS.wt
-rw-------  1 root    root            21 Nov 25 15:22 WiredTiger.lock
-rw-------  1 mongodb mongodb       1201 Nov 25 15:32 WiredTiger.turtle
-rw-------  1 mongodb mongodb     188416 Nov 25 15:32 WiredTiger.wt

该服务最有可能配置为与mongod用户一起运行mongodb。它们将无权删除或覆盖WiredTiger.lock用户在运行mongod.lock时创建的mongodroot或任何其他文件。在/var/lib/mongodb/WiredTiger.turtle

以上的情况下

解决方案是在/var/lib/mongodb/文件夹上方的情况下,将文件夹中所有文件的所有权重置为mongodb用户:

$ sudo chown -R mongodb:mongodb /var/lib/mongodb/

那应该可以解决问题。

答案 2 :(得分:0)

在Mac OS上

  1. 浏览到在安装mongodb时配置的数据目录。例如:data / db,其中存在mongod.lock和WiredTiger.lock
  2. sudo chown -R {用户名}:{groupname} / data / db
  3. 确保您已停止任何mongo进程
  4. 运行“ mongod”命令

您现在应该看到准备接受连接的提示。