解决MongoDB安装报错的好帖

最近学爬虫学到了建代理池,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 组里,虽然不知道为什么这也解决了问题,但是后面发现原来只需要删掉一行就行了。

所以解决问题中走了很多弯路,踩了很多坑,不过也收获了很多。如果有谁能解释这个现象,欢迎指教~

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 服务了,所以上面那句相当于没用了。
-

原文地址:https://www.cnblogs.com/myiuni/p/10743434.html

时间: 2024-11-01 22:50:09

解决MongoDB安装报错的好帖的相关文章

mongodb安装报错的各种坑-(win10企业版,win7类同)

安装mongodb遇到的一些坑 浪费了大量的时间 在此记录一下   主要是电脑系统win10企业版自带的防火墙  当然还有其他的一些坑 一般的问题在第6步骤都可以解决,本教程的安装步骤不够详细的话  请自行百度或谷歌  安装教程很多 我是基于node.js使用mongodb结合Robo 3T数据化管理工具开发的项目使用 1.首先 防火墙关闭,关闭,关闭   (只关闭专用网络应该就行)防火墙导致本地服务启动后打不开网页localhost:27017连接地址不能访问控制面板中--系统安全--关闭防火

解决yum安装报错Protected multilib versions

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错. yum install -y zlib zlib-devel1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multilib versions: zlib-1.2.7-17.el7.x86_64 != zlib-1.2.7-15.el7.i68612 原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上 --setopt=protected_mu

解决mysql安装报错:无法启动此程序,因为计算机丢失MSVCP120.dll

问题一: 因为装的是新系统,所以遇到mysql启动报错:无法启动此程序,因为计算机丢失MSVCP120.dll 后来参考这篇文章https://blog.csdn.net/huacode/article/details/79557871,完美的得到了解决,原来是电脑上缺乏Visual C++ Redistributable Packages for Visual Studio 2013,去微软官网下载一个即可 问题二: 查询报错: You must reset your password usi

rlwrap安装报错You need the GNU readline 解决方法

首先大家肯定知道rlwrap是干什么的? 在linux以及unix中,sqlplus的上下左右.回退无法使用,会出现乱码情况.而rlwrap这个软件就是用来解决这个的. 这个错误曾经困扰我很久很久!下载readline 安装,安装好readline 还是无法运行rlwrap的安装程序 在网上搜寻很久才找到一个靠谱的解决方法 原来rlwrap这个程序的安装,需要依赖两个包, 一个是readline,这个readline在RHEL中已经集成了.不需要去专门下载 另外一个包 libtermcap-de

Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法

出现这种错误是因为主机名和/etc/hosts 文件不一致,只需要把主机名和其IP 写入/etc/hosts 文件,就ok了. 注意名字不能有下划线 修改network 文件之外,再使用hostname 命令指定一下主机名,就不用重启OS了. 1.     修改/etc/sysconfig/network 文件 [[email protected]~]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=s

解决SCCM 1606安装报错一例

解决SCCM 1606安装报错一例 这几天在公司测试SCCM 2016时遇到了如下错误: 博主在安装SCCM 2016时遇到了如下图所示的错误 错误提示:"在执行文件操作是,安装程序遇到错误,有关详细信息,请单击"查看日志"按钮": 打开日志显示如下内容: 错误原因如下: 因为安装SCCM时需要下载一些文件,楼主手欠将文件夹命名成带有中文字样的,如下图所示: 解决方法: 将安装SCCM时下载的文件名称命名为英文样式: 安装成功:

解决SCCM 2016客户端安装报错一例

解决SCCM 2016客户端安装报错一例 使用SCCM 2016推送SCCM Client时遇到如下问题: 以下是客户端计算机的Log: GetHttpRequestObjects failed for verb: 'CCM_POST', url: 'HTTPS://YAN-CM-CM.CONTOSO.COM/ccm_system/request' ccmsetup 2017/3/23 16:58:11 1672 (0x0688) GetDPLocations failed with error

Scrapy安装报错 Microsoft Visual C++ 14.0 is required 解决办法

Scrapy安装报错 Microsoft Visual C++ 14.0 is required 解决办法原因:Scrapy需要的组 twisted 需要 C++环境编译. 方法一:根据错误提示去对应的网站下载C++ 14.0  ,然后重新安装 方法二:直接下载对应系统的whl 安装 1.win10,python_3.6.1,64位2.pip install Scrapy报错3.http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载twiste

MSSQL 2012安装报错之0x858C001B

之前安装 Microsoft Sql Server 2012 R2 的时候总是报这样的错误: SQL Server Setup has encountered the following error: The SQL Server license agreement cannot be located for the selected edition, enterprise. This could be a result of corrupted media or the edition bei