【问题标题】:Can't start mongod with config file无法使用配置文件启动 mongod
【发布时间】:2021-06-18 03:45:57
【问题描述】:

我在 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

但是 mongod 没有启动。如果我使用 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

有趣的是,使用这个,我只能连接到本地机器上的db,其他局域网计算机无法连接

192.168.10.104:3979. 

但是,如果我删除

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

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

【问题讨论】:

  • 除了“它不启动”之外,您能提供更多信息吗?例如,是否有任何错误信息?
  • 是的,当我使用第一个命令时,它没有显示任何内容,就像它没有运行一样。如果我使用第二个命令,它会显示很多消息,例如 MongoDB 开始:pid=...
  • 请注意,bind_ip 配置值仅确定您的 MongoDB 服务器 侦听 的 IP 地址。它不控制来自远程 IP 的访问——这是 firewall 的工作。

标签: mongodb


【解决方案1】:

配置文件必须是valid 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:马上!我更新了我的答案以反映这些变化。
  • 在 MongoDB 2.6 中,配置文件可以是新的 YAML 格式(在 2.6 中引入)或问题中首次发布的旧 INI 样式 config file
【解决方案2】:

不是 mongo 专家,但从 mongo 文档看来,您应该使用“:”作为分隔符而不是“=”。

这是我找到的支持此链接的链接:

[1]: [http://docs.mongodb.org/manual/reference/configuration-options/ "Mongo 配置文件格式"][1]

【讨论】:

    【解决方案3】:

    正如其他人已经说过的,这个错误指向一个不正确的配置文件。因此,最好采用与 mongo 安装捆绑在一起的默认 conf 文件并在其上进行自定义。在基于 Linux 的 mongo 安装中,可以在 /etc/mongod.conf 找到它。 以下是步骤摘要:

    1. 将默认配置复制到所需位置。 cp /etc/mongod.conf <desired_directory>/mymongod.conf
    2. 进行自定义并使用新的配置文件启动 mongod。 /usr/bin/mongod --config <desired_directory>/mymongod.conf

    【讨论】:

      【解决方案4】:

      如果 Valid YAML 不能解决您的问题。然后您可以尝试这些步骤。

      第 1 步:首先检查 Mongod 的安装位置。就我而言,它在这里:检查您的路径

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

      第 2 步:检查您的配置文件名。就像我的情况一样,它是mongod.cfg。这是默认配置。您可以创建自己的或使用相同的,因为我为此示例创建了新的:mongod_original.cfg。您可以在此处更新端口或任何您想要的。喜欢:(要编辑文件,请以管理员身份在记事本中打开文件)。保存文件,如果出现任何错误,请检查您的记事本是否以管理员身份打开。

      第 3 步:cmd 运行为 administrator。并为您的配置文件运行此命令:

      mongod --config mongod_original.cfg
      

      输出:

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

      有用:如果收到错误: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

      【讨论】:

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