zoukankan      html  css  js  c++  java
  • 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 DomainAccount Name 和 Account Password
      • 指定 Service Name。如果你已拥有具有指定名称的服务,则必须选择其他名称。

      • 指定 Data Directory(数据保存目录),对应于 --dbpath。如果该目录不存在,安装程序将创建该目录并为服务用户设置访问权限。
      • 指定 Log Directory(日志保存目录),该目录对应于 --logpath。如果该目录不存在,安装程序将创建该目录并为服务用户设置访问权限。

    然后到了这一步,不要勾选 Install MongoDB Compass。 
    这里写图片描述

    然后,就出问题了。看他的提示说的是 MongoDB Server 服务无法启动,确保你有足够的权限启动系统服务。 
    这里写图片描述

    ???没有权限吗,右键属性安装包发现没办法使用管理员启动。于是我就跟着这个线索去找资料了。

    有说使用管理员启动命令提示符,然后进行安装的,我试了下,没用。然后我根据官网上的无人值守安装教程来做,发现连最基本的文件都解压不完全。【怒摔

    没有办法在安装时候解决这个问题,那么只有先忽略了。

    然后根据官网上的教程来手动启动服务试一下,在 MongoDB 安装文件夹的 bin 文件夹下,使用管理员权限打开 PowerShell: 
    这里写图片描述
    然后输入:

    .mongod --dbpath="E:MongoDBdata"
    • 1

    这里写图片描述
    从返回的命令来看没问题,最后一条是等待端口 27017 上的连接,所以我在浏览器中输入了 127.0.0.1:27017: 
    这里写图片描述 
    可以访问,没毛病啊。

    所以服务为什么不能启动呢? 
    我尝试使用 net start MongoDB 命令来启动,失败: 
    这里写图片描述 
    继续深挖,在任务管理器的服务里面找到 MongoDB,发现状态是 已停止,右键开始,提示 服务没有及时响应启动或控制请求。 
    这里写图片描述

    再来,在任务管理器下方 打开服务,找到 MongoDB Server,查看它的属性,看看有什么猫腻。 
    这里写图片描述 
    这里可以看到可执行文件的路径是这样的:E:MongoDBinmongod.exe --config "E:MongoDBinmongod.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:MongoDBdata
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path:  E:MongoDBlogmongod.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:MongoDBdatadb" --logpath "C:MongoDBdatalogmongo.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文件,然后问题就解决了~

  • 相关阅读:
    【myEcplise2015】导入喜欢的主题
    【SVN】删除SVN上的历史资源路径和SVN上的历史用户信息
    【Linux】linux命令大全
    【Linux】在虚拟机上安装CentOS7
    Spring MVC+Mybatis 多数据源配置
    Spring 加载类路径外的资源文件
    OkHttp使用详解
    在虚拟机搭建JStrom
    在Windows下搭建RocketMQ
    解决confluence的乱码问题
  • 原文地址:https://www.cnblogs.com/whowhere/p/9637605.html
Copyright © 2011-2022 走看看