Win10 安裝配置 MongoDB 4.0 踩坑記

redis 官方沒有 Windows 版的,微軟維護的已經很久沒更新了,因此就在想着換成 MongoDB。redis

因而一趟被我複雜化的踩坑之旅就開始了,同時也記錄一下,避免有人碰見跟我同樣的問題。mongodb

首先在 官網 上下載 msi 安裝包開始安裝。 
這裏寫圖片描述 
這裏寫圖片描述 
我不喜歡把軟件裝在系統盤,因此我選擇 Custom,本身選要裝在哪裏,而後就跳出來下面這張圖。針對下面這張圖我翻譯一下官方文檔上的內容做爲解釋。 
這裏寫圖片描述 
從 MongoDB 4.0 開始,默認狀況下,你能夠在安裝期間配置和啓動 MongoDB 做爲服務,並在成功安裝後啓動 MongoDB 服務。也就是說,MongoDB 4.0 已經不須要像之前版本那樣輸入一堆命令行來將 MongoDB 配置成 Windows 服務來自動運行了,方便了不少。瀏覽器

  • 若是你選擇不將 MongoDB 配置爲服務,請取消選中 Install MongoD as a Service
  • 若是你選擇將 MongoDB 配置爲服務,則能夠:bash

    • 指定如下列用戶之一運行服務:網絡

      • 網絡服務用戶;即 Windows 內置的 Windows 用戶賬戶
      • 本地或域用戶: 
        • 對於現有本地用戶賬戶,Account Domain 指定爲 .,併爲該用戶指定 Account Name 和 Account Password
        • 對於現有域用戶,請爲該用戶指定 Account DomainAccount Name 和 Account Password
    • 指定 Service Name。若是你已擁有具備指定名稱的服務,則必須選擇其餘名稱。spa

    • 指定 Data Directory(數據保存目錄),對應於 --dbpath。若是該目錄不存在,安裝程序將建立該目錄併爲服務用戶設置訪問權限。
    • 指定 Log Directory(日誌保存目錄),該目錄對應於 --logpath。若是該目錄不存在,安裝程序將建立該目錄併爲服務用戶設置訪問權限。

而後到了這一步,不要勾選 Install MongoDB Compass。 
這裏寫圖片描述命令行

而後,就出問題了。看他的提示說的是 MongoDB Server 服務沒法啓動,確保你有足夠的權限啓動系統服務。 
這裏寫圖片描述翻譯

???沒有權限嗎,右鍵屬性安裝包發現沒辦法使用管理員啓動。因而我就跟着這個線索去找資料了。3d

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

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

而後根據官網上的教程來手動啓動服務試一下,在 MongoDB 安裝文件夾的 bin 文件夾下,使用管理員權限打開 PowerShell: 
這裏寫圖片描述
而後輸入:

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

這裏寫圖片描述
從返回的命令來看沒問題,最後一條是等待端口 27017 上的鏈接,因此我在瀏覽器中輸入了 127.0.0.1:27017: 
這裏寫圖片描述 
能夠訪問,沒毛病啊。

因此服務爲何不能啓動呢? 
我嘗試使用 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:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

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

當我把最後一行的 mp: 刪掉後,從新啓動服務,成功了!!! 
這裏寫圖片描述 
將 bin 文件夾設置進系統環境變量能夠大大方便在命令提示符中使用 mongo 等命令,這裏就不細說了。

我也不知道爲何安裝在非系統盤上時,mongod.cfg 文件會無端多出來這麼使人抓狂的一行,我看其餘教程都沒有提到這個問題,也許只有我電腦會出現這種狀況。中途我還很複雜地將 Network Service 用戶添加到了 User 組裏,雖然不知道爲何這也解決了問題,可是後面發現原來只須要刪掉一行就好了。

因此解決問題中走了不少彎路,踩了不少坑,不過也收穫了不少。若是有誰能解釋這個現象,歡迎指教~

若是是使用 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 服務了,因此上面那句至關於沒用了。

勤思考,不隨波逐流,多看官方文檔,技術才能進步。

 

 

net start MongoDB報錯:發生服務特定錯誤: 100.

 

有人說,先刪除服務,在建服務,試了,對我沒用。

簡單點,直接進入db文件夾,先刪除 mongod.lock 文件,而後從新啓動服務便可;要是還不行,就繼續刪 storage.bson文件,而後問題就解決了~

相關文章
相關標籤/搜索