配置文件无法启动mongod

8

我在Windows 8.1上安装了MongoDB。

然后我使用命令提示符导航到D:\ mongodb \ bin。

然后我使用以下命令:

mongod.exe --config D:\mongodb\mongodb.conf

mongodb.conf的内容

bind_ip = 127.0.0.1,100.100.100.100
port = 3979
quiet = true
dbpath = D:\mongodb\data\db
logpath = D:\mongodb\data\log\mongodb.log
logappend = true
journal = true

但是 MongoDB 没有启动。如果我使用 mongod.exe(不使用配置文件),它可以完美运行。
更新:
我的意图很简单:将默认端口更改为另一个端口,并且只允许特定 IP 地址访问。
我之前使用的是 Ubuntu 的配置方式。感谢 Panda_Claus 指出了新的配置方法。
所以我将配置更改为:
net:
   bindIp: 127.0.0.1,100.100.100.100
   port: 3979

问题在于,当我使用这个配置启动mongod时,它会出现错误然后自动退出。
ERROR: listen(): bind() failed errno:10049 The requested address is not valid in its context. for socket: 100.100.100.100:3979

那么我如何允许只有本地主机和特定IP地址(在这种情况下是100.100.100.100)连接到mongodb?

更新2

我使用了maerics的配置。

net:
  bindIp: 127.0.0.1,192.168.10.104
  port: 3979
storage:
  dbPath: D:\mongodb\data\db
  journal:
    enabled: true
systemLog:
  destination: file
  path: D:\mongodb\data\log\mongodb.log
  quiet: true
  logAppend: true

有趣的是,使用这个方法,我只能连接到本地机器上的数据库,其他局域网计算机无法连接。
192.168.10.104:3979. 

然而,如果我删除

标签
systemLog:
  destination: file
  path: D:\mongodb\data\log\mongodb.log
  quiet: true
  logAppend: true

局域网内的其他计算机可以连接到数据库。


除了“它无法启动”之外,您能提供更多的信息吗?例如,是否有任何错误消息? - maerics
是的,当我使用第一个命令时,它不会显示任何东西,就好像它没有运行一样。如果我使用第二个命令,它会显示很多消息,例如MongoDB starting: pid=... - haipham23
请注意,bind_ip配置值仅确定MongoDB服务器正在侦听哪个IP地址。它不控制来自远程IP的访问 - 这是防火墙的工作。 - Stennie
4个回答

12

配置文件必须是有效的YAML格式

尝试修改文档中提供的示例文件,例如:

net:
  bindIp: 127.0.0.1
  port: 3979
storage:
  dbPath: D:\mongodb\data\db
  journal:
    enabled: true
systemLog:
  destination: file
  path: D:\mongodb\data\log\mongodb.log
  quiet: true
  logAppend: true

非常感谢Maerics!只需要做一个小改动:bind_ip => bindIp,dbpath => dbPath。 - haipham23
@haipham23:太对了!我已经更新了我的答案以反映这些更改。 - maerics
截至MongoDB 2.6版本,配置文件可以是新的YAML格式(在2.6中引入),也可以是遗留的INI风格配置文件,就像最初发布的问题一样。 - Stennie

3

1
正如其他人所说,这个错误指向了一个不正确的配置文件。因此,最好使用与mongo安装捆绑在一起的默认conf文件,并在其上进行自定义。在基于Linux的mongo安装中,可以在/etc/mongod.conf找到它。 以下是步骤摘要:
  1. 将默认conf复制到所需位置。 cp /etc/mongod.conf <desired_directory>/mymongod.conf
  2. 进行自定义并使用新的配置文件启动mongod。 /usr/bin/mongod --config <desired_directory>/mymongod.conf

0

如果有效的YAML不能解决您的问题。那么您可以尝试以下步骤。

步骤1:首先检查您的Mongod安装在哪里。就像在我的情况下,它在这里:Check your path

C:\Program Files\MongoDB\Server\4.0\bin

enter image description here

步骤2:检查你的配置文件名是什么,比如在我的情况下,它是mongod.cfg。这是默认配置。你可以创建自己的配置文件或使用相同的配置文件,就像我为这个示例创建了一个新的配置文件:mongod_original.cfg。你可以在这里更新端口或任何你想要的内容。例如:(要编辑文件,请以管理员身份打开记事本)。保存文件,如果出现任何错误,则检查是否以管理员身份打开了记事本。

enter image description here

步骤三:以管理员身份运行cmd,并针对您的配置文件运行此命令:

mongod --config mongod_original.cfg

输出:

您的mongoDB将在更新端口27000上启动。

enter image description here

有用:如果您遇到以下错误:exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: C:\Program Files\MongoDB\Server\4.0\data, terminating

请根据您的操作系统,点击以下链接查找解决方案:MongoDB: exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接