解決 Win10 安裝 MongoDB 4.0 無法啓動服務的問題( 踩了個大坑)

原文鏈接:https://blog.csdn.net/qq_20084101/article/details/82261195

首先在 官網 上下載 msi 安裝包開始安裝。

這裏寫圖片描述
我不喜歡把軟件裝在系統盤,所以我選擇 Custom,自己選要裝在哪裏,然後就跳出來下面這張圖。針對下面這張圖我翻譯一下官方文檔上的內容作爲解釋。

這裏寫圖片描述

從 MongoDB 4.0 開始,默認情況下,你可以在安裝期間配置和啓動 MongoDB 作爲服務,並在成功安裝後啓動 MongoDB 服務。也就是說,MongoDB 4.0 已經不需要像以前版本那樣輸入一堆命令行來將 MongoDB 配置成 Windows 服務來自動運行了,方便了很多。

如果你選擇不將 MongoDB 配置爲服務,請取消選中 Install MongoD as a Service。
如果你選擇將 MongoDB 配置爲服務,則可以:
指定以下列用戶之一運行服務:
網絡服務用戶;即 Windows 內置的 Windows 用戶帳戶

本地或域用戶:

對於現有本地用戶帳戶,Account Domain 指定爲 .,併爲該用戶指定 Account Name 和 Account Password。
對於現有域用戶,請爲該用戶指定 Account Domain,Account Name 和 Account Password。
指定 Service Name。如果你已擁有具有指定名稱的服務,則必須選擇其他名稱。

指定 Data Directory(數據保存目錄),對應於 --dbpath。如果該目錄不存在,安裝程序將創建該目錄併爲服務用戶設置訪問權限。

指定 Log Directory(日誌保存目錄),該目錄對應於 --logpath。如果該目錄不存在,安裝程序將創建該目錄併爲服務用戶設置訪問權限。

然後到了這一步,不要勾選 Install MongoDB Compass。

這裏寫圖片描述


然後,就出問題了。看他的提示說的是 MongoDB Server 服務無法啓動,確保你有足夠的權限啓動系統服務。

這裏寫圖片描述

 

有說使用管理員啓動命令提示符,然後進行安裝的,我試了下,沒用。然後我根據官網上的無人值守安裝教程來做,發現連最基本的文件都解壓不完全。【怒摔

沒有辦法在安裝時候解決這個問題,那麼只有先忽略了。

然後根據官網上的教程來手動啓動服務試一下,在 MongoDB 安裝文件夾的 bin 文件夾下,使用管理員權限打開 PowerShell:

然後輸入:

.\mongod --dbpath="E:\MongoDB\data"
1

從返回的命令來看沒問題。

所以服務爲什麼不能啓動呢?
我嘗試使用 net start MongoDB 命令來啓動,失敗:

這裏寫圖片描述

繼續深挖,在任務管理器的服務裏面找到 MongoDB,發現狀態是 已停止,右鍵開始,提示 服務沒有及時響應啓動或控制請求。

這裏寫圖片描述
再來,在任務管理器下方 打開服務,找到 MongoDB Server,查看它的屬性,看看有什麼貓膩。

這裏寫圖片描述

這裏可以看到可執行文件的路徑是這樣的:E:\MongoDB\bin\mongod.exe --config "E:\MongoDB\bin\mongod.cfg" --service。

也就是說,啓動 MongoDB Server 服務時運行的也是這條命令,於是我手動運行了這條命令:

這裏寫圖片描述

Unrecognized option: mp,未識別的選項:mp,這是個啥?

劃重點!!
mongod 命令後的 --config 是指定運行 mongod 時的配置文件,於是在 bin 文件夾下找到 mongod.cfg 文件,打開:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: E:\MongoDB\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  E:\MongoDB\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:
mp:


終於發現隱藏在最後一行的 mp:,找得我好苦,然後又在配置文件中列出的網址中翻了一圈,沒有發現有 mp: 這個選項。在解決問題時我曾經試着在 C 盤上安裝 MongoDB,一切順利,沒有任何報錯,所以我對比了一下安裝在兩個盤上的配置文件,發現差別就只是最後的這個 mp:。

當我把最後一行的 mp: 刪掉後,重新啓動服務,成功了!!!

這裏寫圖片描述

將 bin 文件夾設置進系統環境變量可以大大方便在命令提示符中使用 mongo 等命令,這裏就不細說了。

評論中有人指出:軟件安裝在系統盤,數據和日誌在非系統盤,也會出現同樣的問題。
我也不知道爲什麼安裝在非系統盤上時,mongod.cfg 文件會無故多出來這麼令人抓狂的一行,我看其他教程都沒有提到這個問題,也許只有我電腦會出現這種情況。中途我還很複雜地將 Network Service 用戶添加到了 User 組裏,雖然不知道爲什麼這也解決了問題,但是後面發現原來只需要刪掉一行就行了。

所以解決問題中走了很多彎路,踩了很多坑,不過也收穫了很多。如果有誰能解釋這個現象,歡迎指教~

PS:如果是使用 msi 進行安裝,由於 MongoDB 4.0 自動安裝配置成 Windows 服務,也就不需要大部分教程裏的像 mongod --dbpath "C:\MongoDB\data\db" --logpath "C:\MongoDB\data\log\mongo.log" --install --serviceName "MongoDB" 這樣的語句了,除非下載的是單純的壓縮包,我看到很多 4.0 的教程下載的是 msi 安裝包,都還在使用命令提示符配置 MongoDB 成服務,所以這不是多此一舉嗎?

MongoDB Server 啓動時會調用 mongod.cfg 配置文件,所以要調整配置,直接按照官方文檔裏的說明修改該文件就行。log 文件會記錄很多有用的信息,如果使用 mongod 或 mongo 有地方報錯了或者想知道更詳細的信息可以查看日誌。

比如說你已經使用 msi 安裝好了,然後又使用上面那條語句,在命令提示符裏只有這樣的提示:


但是打開日誌文件就會發現:

日誌顯示已經安裝過 MongoDB 服務了,所以上面那句相當於沒用了。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章