MongoDB运行并且永不停止
问题:MongoDB运行后不停止的原因和解决方法
在安装MongoDB时,如果使用--install
命令行参数,它会将其安装为Windows服务。但是在相关注册表键写入时,可能会出现相对路径或绝对路径的问题。可参考此讨论串。
下面是一些解决方法:
1. 执行mongod.exe --service
命令进行安装。
2. 在命令行中输入完整路径:c:\> c:\mongodb\bin\mongod.exe --service
。注意以管理员身份运行命令行窗口(尤其是在Windows服务器上),否则可能会受到UAC的限制。
3. 可以使用此Gist来简化开发环境的设置。
4. 使用net start MongoDB
命令启动服务(在使用--install
参数后)。
5. 确保按照MongoDB官方文档中的步骤进行操作。
另外,启动MongoDB服务时需要指定日志文件路径和数据库路径,可以使用mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt" --install
命令进行设置。
需要注意的是,如果以普通用户身份运行命令,则命令将会悄无声息地完成,但不会添加服务。因此,需要以管理员身份运行mongod --install
命令,并确保运行net start MongoDB
命令。
MongoDB运行后不停止的问题可能是由于安装时使用了错误的命令行参数或未按照正确的步骤进行操作所致。通过使用正确的命令行参数和以管理员身份运行命令,可以解决该问题。
问题:MongoDB运行后无法停止的原因及解决方法
在尝试了几个小时后,我终于成功了。
确保以下内容:
1. 添加<MONGODB_PATH>\bin
目录到系统变量PATH
中
2. 以管理员身份运行命令提示符
步骤:
第一步:执行以下命令:
D:\mongodb\bin>mongod --remove
第二步:以管理员身份运行命令提示符后,执行以下命令:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
注意:你也可以在上述命令后添加--serviceName MongoDB
。
完成以上步骤后,在命令提示符中执行以下命令:
services.msc // 或者 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 MongoDB
或Start-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作为一个服务启动,但我的数据库是空的。只有在路径后添加\数据,我才能看到我先前存在的数据库:mongod --dbpath=D:\mongodb\data
“确保以管理员身份运行命令提示符”- 这就是解决方法!以普通权限运行不会有任何警告,但服务只是没有被创建。权限,权限,权限!
前两个答案都不能在重启后保持服务运行状态 - 参见下面的我的答案。
对我来说,mongod --remove
是关键,因为我有一个旧的安装位置,而--install
不能自动覆盖新位置。
应该是验证过的答案。