Win10 安装配置 MongoDB 4.0 踩坑记
redis 官方没有 Windows 版的,微软维护的已经好久没更新了,所以就在想着换成 MongoDB。
于是一趟被我复杂化的踩坑之旅就开始了,同时也记录一下,避免有人遇见跟我一样的问题。
首先在 官网 上下载 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
 
从返回的命令来看没问题,最后一条是等待端口 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文件,然后问题就解决了~
Win10 安装配置 MongoDB 4.0 踩坑记的更多相关文章
- Linux下安装配置MongoDB 3.0.x 版本数据库
		
说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.128 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/s ...
 - win10安装配置mongodb
		
1. 下载MongoDB并安装官网下载地址:https://blog.csdn.net/qq_41127332/article/details/80755595 ,选择合适的版本进行下载.我选择是3. ...
 - Spring boot配置MongoDB以及Morphia踩坑记录
		
pom 因为项目中采用Morphia(MongoDB的ODM框架,对象-文档映射(object-document mapper)),因此需要在pom文件中引入相应依赖: <dependency& ...
 - CentOS 6.x安装配置MongoDB 3.4.x
		
说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.128 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/s ...
 - manjaro xfce 18.0 踩坑记录
		
manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...
 - 【转载】CentOS6.5_X64下安装配置MongoDB数据库
		
[转载]CentOS6.5_X64下安装配置MongoDB数据库 2014-05-16 10:07:09| 分类: 默认分类|举报|字号 订阅 下载LOFTER客户端 本文转载自zhm&l ...
 - Linux下PHP安装配置MongoDB数据库连接扩展
		
Web服务器: IP地址:192.168.21.127 PHP安装路径:/usr/local/php 实现目的: 安装PHP的MongoDB数据库扩展,通过PHP程序连接MongoDB数据库 具体操作 ...
 - Windows下安装配置MongoDB
		
Windows下安装配置MongoDB 一,介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB ...
 - Linux下安装配置MongoDB数据库
		
说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.130 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/s ...
 
随机推荐
- 上海学生事务中心&新华路派出所的位置
			
上海学生事务中心: 地址:冠生园路401号 工作时间:9:00-17:00 电话:021-64829191 新华路派出所: 地址:新华路590弄21号 工作时间:周一至周六 9:00 ...
 - 2019nc#4
			
题号 标题 已通过代码 题解 通过率 团队的状态 A meeting 点击查看 树直径 604/2055 B xor 点击查看 线段树维护线性基交 81/861 未通过 C sequence 点击 ...
 - CF - 652 E Pursuit For Artifacts 边双联通
			
题目传送门 题解总结起来其实很简单. 把所有的边双联通分量缩成一个点,然后建立好新边, 然后再从起点搜到终点就好了. 代码: /* code by: zstu wxk time: 2019/02/23 ...
 - asp.net core系列  72 Exceptionless使用介绍
			
一.Exceptionless介绍 Exceptionless专注于.net平台提供实时错误和日志报告.主要包括:错误通知.智能分组异常.详细错误报告堆栈跟踪.支持离线.UI查看重要错误和确定优先级. ...
 - IDEA中把一个Maven工程安装到本地仓库
			
首先说明问题,我需要使用PageHelper插件,但是这个分页插件是改造过的,是一个pom工程,现在需要当作一个jar包使用,所以需要安装到本地仓库 1. 2. 3. 4. 5.成功 6.需要使用该j ...
 - FreeSql (七)插入数据时忽略列
			
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...
 - Unity3D_05_理解Unity的新GUI系统(UGUI)
			
理解Unity的新GUI系统(UGUI) Unity GUI 链接:UnityEngine.UI系统基础类架构图 Unity GUI 链接:UnityEngine Event & Event ...
 - 解决chrome浏览器崩溃,再次安装不上问题
			
上网重新下载了个安装包,发现安装包都打不来 很绝望,查了很多资料 很多人说要删除注册表的东西 但是打开注册表,发现一堆google的东西,手动删根本不现实 在绝望中看到了解决方案:google Upd ...
 - Java 内存溢出分析
			
原文地址:Java 内存溢出分析 博客地址:http://www.moonxy.com 一.前言 Java 的 JVM 的内存一般可分为 3 个区:堆(heap).栈(stack)和方法区(metho ...
 - jmeter linux压测报错:Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/server/ptest/disk_out.jmx'.
			
1.linux环境jmeter与win环境编写脚本的jmeter版本不一致,版本改为一致 2.脚本中存在中文,去除中文 3.脚本中存在类似于jp@gc - Active Threads Over Ti ...