【问题标题】:How can I run MongoDB as a Windows service?如何将 MongoDB 作为 Windows 服务运行?
【发布时间】:2011-01-27 03:21:28
【问题描述】:

如何设置 MongoDB 使其可以作为 Windows 服务运行?

【问题讨论】:

标签: mongodb windows-services nosql


【解决方案1】:

尝试了几个小时,我终于做到了。

确保:

  1. 您已将<MONGODB_PATH>\bin 目录添加到系统变量PATH
  2. 以管理员身份运行命令提示符

步骤:

第 1 步: 执行此命令:

D:\mongodb\bin>mongod --remove

第2步:以管理员身份打开命令提示符后执行此命令:

D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install

注意:您也可以在上述命令后附加--serviceName MongoDB

就是这样!


之后,在命令提示符处执行:
services.msc

// OR

net start MongoDB

然后寻找MongoDB服务并点击开始。


注意:确保以管理员身份运行命令提示符。

如果您不这样做,您的日志文件(上例中的D:\mongodb\log.txt)将包含如下行:

2016-11-11T15:24:54.618-0800 I CONTROL  [main] Trying to install Windows service 'MongoDB'
2016-11-11T15:24:54.618-0800 I CONTROL  [main] Error connecting to the Service Control Manager: Access is denied. (5)

如果您尝试从非管理员控制台(即 PowerShell 中的 net start MongoDBStart-Service MongoDB)启动服务,您将收到如下响应:

System error 5 has occurred.
Access is denied.

或者这个:

Start-Service : Service 'MongoDB (MongoDB)' cannot be started due to the following error: Cannot open MongoDB service
on computer '.'.
At line:1 char:1
+ Start-Service MongoDB
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
   ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceComman

【讨论】:

  • 您也可以使用net start MongoDB 来启动它,而不是使用services.msc。 (mongod 推荐给我。)
  • 这对我有用。如果日志文件的路径不存在,则必须手动创建它(我在示例中使用了除 mongo 目录之外的路径)。
  • 一开始,Mongo 是作为服务启动的,但是我的数据库是空的。我只能通过将 \data 添加到路径来查看我以前存在的数据库: mongod --dbpath=D:\mongodb\data
  • “确保以管理员身份运行命令提示符”——它成功了!以正常权限运行不会写任何警告,但只是没有创建服务。权限,权限,权限!
  • 应该是经过验证的答案
【解决方案2】:

我认为如果您使用--install 命令行开关运行它,它会将其安装为 Windows 服务。

mongod --install

可能值得先阅读this thread。写入相关注册表项时,相对/绝对路径似乎存在一些问题。

【讨论】:

  • 我终于设法通过执行这个来安装:mongod.exe --service
  • 看来你真正需要做的是在命令行输入完整路径:c:\> c:\mongodb\bin\mongod.exe --service。但是,请确保以管理员身份运行命令窗口(尤其是在 windows 服务器上),否则您将被 UAC 阻挠。
  • 这个要点可以节省开发机器设置的时间gist.github.com/serdarb/5102848
  • 使用 --install 运行后,你必须net start MongoDB
  • 它需要一个日志文件路径,你可以像这样添加dbpath和日志文件路径 mongod --dbpath="c:\data\db" --logpath="c:\data\db\log .txt" --install , 之后需要运行 net start MongoDB。
【解决方案3】:

不仅--install

还需要--dbpath--logpath

重启操作系统后,您需要手动删除 "mongod.lock"

【讨论】:

  • +1 用于删除 mongod.lock 文件。这似乎仍然是 1.8.1 在 64 位上运行的问题。
  • 最好指定 --config 并在那里定义 dbpath、logpath 和其他选项。
  • 看来这个mongod.lock的bug已经在我的Windows 8 x64上修复了
【解决方案4】:

与其他答案不同,这将..

在系统重启/重启时自动启动服务

MongoDB 安装

窗口

(1) 安装 MongoDB

(2) 添加bin到路径

(3) 创建c:\data\db

(4) 创建 c:\data\log

(5) 使用内容创建 c:\data\mongod.cfg ..

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db

(6) 创建将在重启时自动启动的服务 .. 以管理员身份运行 ..

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

(7) 启动服务..以管理员身份运行..

net start MongoDB

重要提示:即使显示“MongoDB 服务已成功启动”,它也可能会失败

要仔细检查打开控制面板 > 服务,确保 MongoDB 服务的状态为“正在运行”

如果没有,请检查 C:\data\log\mongod.log 中的日志文件以了解失败原因并修复它

(不要通过控制面板>服务启动MongoDB,使用..net start MongoDB)

(8) 最后,在运行 MongoDB 的情况下重启你的机器,它在重启时仍然会运行

如果你想杀死它..

net stop MongoDB

sc.exe delete MongoDB

【讨论】:

  • 感谢它对我有用,我只需在此命令中将 3.4 更改为 3.6 版本 sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
【解决方案5】:

以下步骤适用于 Windows。

administrative cmd

下运行
mongod --remove

这将删除现有的 MongoDB 服务(如果有)。

mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"

确保C:\data\db 文件夹存在

打开服务:

services.msc

找到MongoDB -> 右键 -> 开始

【讨论】:

  • 完美!次要注意,文件夹必须存在(至少是用于日志的文件夹)。
  • 关于旁注的小问题:文件也不需要存在吗?我可以模糊地记得(空)文件本身的缺失给我带来了问题。
  • 完美解决方案。
【解决方案6】:

您可以使用以下命令将 mongodb 作为 Windows 服务运行

"C:\mongodb\bin\mongod" --bind_ip  yourIPadress  --logpath  "C:\data\dbConf\mongodb.log"  --logappend  --dbpath  "C:\data\db"  --port yourPortNumber --serviceName "YourServiceName" --serviceDisplayName "YourServiceName" --install 

如果你使用带有默认参数的 mongodb,你可以使用这些值:

  • 你的IP地址:127.0.0.1或本地主机
  • yourPortNumber : 27017(默认端口)或不要放 --port
  • serviceDisplayName : 仅当您运行多个服务时(自 mongodb 1.8 起)

这里有关于这个命令的更多信息

http://www.mongodb.org/display/DOCS/Windows+Service

【讨论】:

    【解决方案7】:

    我尝试了所有答案,然后按照https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition 描述的方式进行了操作。

    使用配置文件...

    "C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install

    【讨论】:

      【解决方案8】:

      此 PowerShell 脚本将 MongoDB 作为 Windows 服务下载并安装:

      Set-ExecutionPolicy RemoteSigned
      
      $mongoDbPath = "C:\MongoDB" 
      $mongoDbConfigPath = "$mongoDbPath\mongod.cfg"
      $url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.zip" 
      $zipFile = "$mongoDbPath\mongo.zip" 
      $unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.4.9"
      
      if ((Test-Path -path $mongoDbPath) -eq $True) 
      { 
        write-host "Seems you already installed MongoDB"
          exit 
      }
      
      md $mongoDbPath 
      md "$mongoDbPath\log" 
      md "$mongoDbPath\data" 
      md "$mongoDbPath\data\db"
      
      [System.IO.File]::AppendAllText("$mongoDbConfigPath", "dbpath=C:\MongoDB\data\db`r`n")
      [System.IO.File]::AppendAllText("$mongoDbConfigPath", "logpath=C:\MongoDB\log\mongo.log`r`n")
      [System.IO.File]::AppendAllText("$mongoDbConfigPath", "smallfiles=true`r`n")
      [System.IO.File]::AppendAllText("$mongoDbConfigPath", "noprealloc=true`r`n")
      
      $webClient = New-Object System.Net.WebClient 
      $webClient.DownloadFile($url,$zipFile)
      
      $shellApp = New-Object -com shell.application 
      $destination = $shellApp.namespace($mongoDbPath) 
      $destination.Copyhere($shellApp.namespace($zipFile).items())
      
      Copy-Item "$unzippedFolderContent\*" $mongoDbPath -recurse
      
      Remove-Item $unzippedFolderContent -recurse -force 
      Remove-Item $zipFile -recurse -force
      
      & $mongoDBPath\bin\mongod.exe --config $mongoDbConfigPath --install
      
      & net start mongodb
      

      【讨论】:

        【解决方案9】:

        这是唯一对我有用的东西。因为一切都必须是绝对路径:

        C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
        

        我还必须从 admin cmd 运行它

        【讨论】:

          【解决方案10】:

          推荐的方式mongod --install会报错:

          2015-12-03T18:18:28.896+0100 I CONTROL  --install has to be used with a log file for server output
          

          C:\mongodb 中安装完 mongodb 后,您只需添加日志路径:

          mongod --install --logpath C:\mongodb\logs\mongo.log
          

          日志文件的路径必须存在,并且必须是 Windows 绝对路径。然后通过键入以下内容启动 MongoDB 服务:

          net start MongoDB
          

          【讨论】:

            【解决方案11】:

            使用 Mongo DB:3.6

            (1) 安装 MongoDB

            (2) 添加bin到环境路径变量

            (3) 创建c:\data\db

            (4) 创建c:\data\mongod.log

            (5) 在bin 文件夹上运行以下命令

            .\mongod.exe --install --logpath c:\data\mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c:\data\db

            (6) 以服务方式启动 mongo db

            net 启动 MongoDB

            (7) 最后在命令行中运行mongo检查mongo shell是否打开。

            【讨论】:

            • 也适用于 mongod 版本 4.2.8。谢谢!
            • 在第 5 步中,如果抛出此错误:F CONTROL [main] Failed global initialization: FileNotOpen: Failed to open "C:\ProgramData\MongoDB\log\mongod.log" 只需删除 mongod.log 文件
            【解决方案12】:

            考虑使用

            mongod --install --rest --master
            

            【讨论】:

            • 考虑用 ruby​​ 的答案更新你的答案(你的答案不完整)
            【解决方案13】:

            对于版本 2.4.3(截至发布日期的当前版本),创建一个配置文件,然后执行以下操作:

            C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service

            【讨论】:

              【解决方案14】:
              1) echo logpath=F:\mongodb\log\mongo.log > F:\mongodb\mongod.cfg
              
              2) dbpath=F:\mongodb\data\db [add this to the next line in mongod.cfg]
              
              C:\>F:\mongodb\bin\mongod.exe –config F:\mongodb\mongod.cfg –install
              

              Reference

              【讨论】:

                【解决方案15】:

                这对我有用:

                sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"
                

                如 Mongo 文档中所述,对我来说,转义 binPath 失败

                失败:

                sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB 2.6 Standard\mongod.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
                

                【讨论】:

                • 以管理员身份运行 cmd 并运行以下命令: sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod .config" displayname="MongoDB 2.6 Standard" start="auto"
                【解决方案16】:

                最简单的方法是,

                1. 创建文件夹C:\data\db
                2. 创建文件C:\data\db\log.txt
                3. 以“以管理员身份运行”打开命令提示符并确保mogodb bin目录路径正确并写入

                  C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt" 
                  
                4. 启动mongodb服务:

                  net run MongoDB
                  

                【讨论】:

                • 'C:\Program' 不是内部或外部命令、可运行程序或批处理文件。
                【解决方案17】:

                使用 MongoDB 3.4 [Windows]

                • 创建目录 C:/mongodb/data
                • 使用此配置在 C:/mongodb/mongodb.config 中创建一个文件:

                  storage:
                      engine: wiredTiger
                      dbPath: "C:/mongodb/data"
                      directoryPerDB: true
                      journal:
                          enabled: true
                  systemLog:
                      destination: file
                      path: "C:/mongodb/data/mongod.log"
                      logAppend: true
                      timeStampFormat: iso8601-utc
                  net:
                      bindIp: 127.0.0.1
                      port: 27017
                      wireObjectCheck : false
                  
                • 要将 MongoDb 安装为服务,请在具有管理员权限的 powershell 中运行此命令

                  mongod --config="C:\mongodb\mongodb.config" --install --service

                • 打开 Services.msc 并查找 MongoDb,然后启动它

                【讨论】:

                  【解决方案18】:

                  目前(直到2.4.4版本),如果任何路径(dbpath/logpath/config)包含空格,则服务将无法启动,并显示错误:“服务没有响应控制功能” .

                  【讨论】:

                    【解决方案19】:

                    我使用的是 2.4.9 版本并使用配置文件。直到我用空格将配置文件中的等号括起来后,该服务才会启动:

                    dbpath = D:\Mongo data
                    logpath = C:\mongodb\logs\mongo.log 
                    logappend = true
                    

                    原来我有:

                    logpath=C:\mongodb\logs\mongo.log 
                    

                    我还发现,在安装服务时,您必须为配置文件使用绝对路径,例如:

                    c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install
                    

                    不要试图在带有空格的 dbpath 周围放置逗号。当您执行 net start MongoDB 时,该服务似乎已启动,但它会终止。检查日志文件以确认服务已真正启动。

                    【讨论】:

                      【解决方案20】:

                      以管理员身份运行“cmd.exe”,然后运行“sc.exe”以添加新的 Windows 服务。

                      例如:

                      sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
                      

                      【讨论】:

                        【解决方案21】:

                        我发现您应该使用安装标志将 : dbpath 、 config 和 logfile 传递给 mongod

                        例子:

                        mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install 
                        

                        注意:我的路径变量中有 mongod 路径。

                        您可以通过以下方式控制服务:

                        net start mongodb
                        net stop  mongodb 
                        

                        【讨论】:

                          【解决方案22】:

                          这些是将 MongoDB 安装为 Windows 服务的步骤:

                          1. 创建一个日志目录,例如C:\MongoDB\log

                          2. 创建一个 db 目录,例如C:\MongoDB\db

                          3. 用下面几行准备一个配置文件

                            dbpath=C:\MongoDB\db

                            logpath=C:\MongoDB\log

                            将名为 mongod.cfg 的配置文件放在文件夹“C:\MongoDB\”

                          4. 以下命令将在您的 sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\mongod.cfg\" DisplayName= "MongoDB 3.4" start= "auto"

                          5. 运行此命令后,您将获得[SC] CreateService SUCCESS

                          6. 在命令提示符下运行以下命令

                            net start MongoDB

                          【讨论】:

                            【解决方案23】:

                            如果您使用来自Administrator Command PromptMSI download 安装 MongoDB 2.6.1 或更高版本,则应自动为您创建服务定义。

                            如果需要,MongoDB 文档还有一个教程可以帮助您定义Manually Create a Windows Service

                            【讨论】:

                              【解决方案24】:

                              此答案适用于已使用 MSI 安装程序安装 mongo DB 的用户。

                              假设您的默认安装位置是“C:\Program Files\MongoDB\Server\3.2\bin”

                              将 mongo 作为窗口服务运行的步骤

                              1. 以管理员身份打开命令提示符
                              2. 键入cd C:\Program Files\MongoDB\Server\3.2\bin(正确检查路径,因为您可能安装了不同的版本,而不是3.2)。
                              3. 按回车
                              4. 输入net start MongoDB
                              5. 按回车
                              6. 按 Windows + R,输入 services.msc 并检查 Mongo 是否作为服务运行。

                              【讨论】:

                              • 路径正确但出现错误:System error 2 has occurred. The system cannot find the file specified. 尝试过 mongod 和 mongodb。
                              【解决方案25】:
                              mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
                              

                              【讨论】:

                                【解决方案26】:
                                1. 检查 Windows 服务

                                  如果您有 mongo 服务,请运行以下命令将其删除
                                  mongod --remove

                                2. 创建包含以下内容的 mongo.cfg 文件

                                  系统日志:
                                  目的地:文件
                                  路径:c:\data\log\mongod.log
                                  存储:
                                  dbPath:c:\data\db

                                  路径:您要存储日志数据的位置
                                  dbPath:你的数据库目录

                                3. 然后运行下面的命令

                                  sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

                                  binPath : mongodb安装目录
                                  config: .cfg 文件地址
                                  显示名称:您的服务名称

                                4. 启动服务

                                  net start MongoDB

                                现在一切都完成了。享受它

                                【讨论】:

                                  【解决方案27】:

                                  在我的例子中,我在 mongd.exe 旁边创建了 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: D:\apps\MongoDB\Server\4.0\data
                                    journal:
                                      enabled: true
                                  #  engine:
                                  #  mmapv1:
                                  #  wiredTiger:
                                  
                                  # where to write logging data.
                                  systemLog:
                                    destination: file
                                    logAppend: true
                                    path:  D:\apps\MongoDB\Server\4.0\log\mongod.log
                                  
                                  # network interfaces
                                  net:
                                    port: 27017
                                    bindIp: 0.0.0.0
                                  
                                  
                                  #processManagement:
                                  
                                  #security:
                                  
                                  #operationProfiling:
                                  
                                  #replication:
                                  
                                  #sharding:
                                  
                                  ## Enterprise-Only Options:
                                  
                                  #auditLog:
                                  
                                  #snmp:
                                  

                                  然后我运行这两个命令来创建服务。

                                  D:\apps\MongoDB\Server\4.0\bin>mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg --install
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>net stop mongodb
                                  The MongoDB service is stopping.
                                  The MongoDB service was stopped successfully.
                                  
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>mongod --remove
                                  2019-04-10T09:39:29.305+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
                                  2019-04-10T09:39:29.309+0800 I CONTROL  [main] Trying to remove Windows service 'MongoDB'
                                  2019-04-10T09:39:29.310+0800 I CONTROL  [main] Service 'MongoDB' removed
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>
                                  D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "\"D:\apps\MongoDB\Server\4.0\bin\mongod.exe\" --service --config=\"D:\apps\MongoDB\Server\4.0\bin\mongod.cfg\""
                                  [SC] CreateService SUCCESS
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>net start mongodb
                                  The MongoDB service is starting..
                                  The MongoDB service was started successfully.
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>
                                  

                                  以下不正确,注意转义引号是必需的。

                                  D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "D:\apps\MongoDB\Server\4.0\bin\mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg"
                                  [SC] CreateService SUCCESS
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>net start mongodb
                                  The service is not responding to the control function.
                                  
                                  More help is available by typing NET HELPMSG 2186.
                                  
                                  
                                  D:\apps\MongoDB\Server\4.0\bin>
                                  

                                  【讨论】:

                                    【解决方案28】:

                                    请尝试 Mongo DB:3.6 和 Windows 10 中的步骤

                                    1. mongod --remove
                                    2. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
                                    3. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
                                    4. net start MongoDB

                                    【讨论】:

                                    • MongoDB 4.0 在 Windows 64 位上运行良好...除非您尝试通过在 mongod.cfg 中的“安全”设置中添加“授权:启用”行来保护它。然后导致windows报错“服务没有及时启动”。知道这里发生了什么吗?
                                    【解决方案29】:

                                    在 Windows 机器上编辑配置文件后,我只需要重新启动 MongoDB (v4.4) 服务。这是我所做的:

                                    1. Win+R 打开“运行”面板
                                    2. 输入“services.msc”并回车
                                    3. 搜索“MongoDB” - 您可以按“m”跳转到它。
                                    4. 右键单击 - 选择“重新启动”

                                    就是这样!

                                    【讨论】:

                                      猜你喜欢
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多