【问题标题】:Mongo service start or restart always failMongo服务启动或重启总是失败
【发布时间】:2020-12-04 11:05:54
【问题描述】:

我已经安装了 mongodb,然后我创建了一个 mongo 服务:

 [Unit]
    Description=High-performance, schema-free document-oriented database
    After=network.target

    [Service]
    User=mongodb
    ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

    [Install]
    WantedBy=multi-user.target

但是当我启动服务然后我检查状态时,我总是收到这个错误:

● mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2017-04-24 13:08:55 UTC; 6min ago
  Process: 1094 ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf (code=exited, status=48)
 Main PID: 1094 (code=exited, status=48)

Apr 24 13:08:54 ip-172-31-37-163 systemd[1]: Started High-performance, schema-free document-oriented database.
Apr 24 13:08:55 ip-172-31-37-163 systemd[1]: mongodb.service: Main process exited, code=exited, status=48/n/a
Apr 24 13:08:55 ip-172-31-37-163 systemd[1]: mongodb.service: Unit entered failed state.
Apr 24 13:08:55 ip-172-31-37-163 systemd[1]: mongodb.service: Failed with result 'exit-code'.

【问题讨论】:

    标签: linux mongodb ubuntu ubuntu-16.04


    【解决方案1】:

    问题出在配置文件中并正在更改

    bindIp: 127.0.0.1, X.X.X.X

    bindIp: [127.0.0.1, X.X.X.X]

    解决了我的问题

    【讨论】:

    【解决方案2】:

    尝试更改所有者权限

    chown -R mongodb:mongodb /var/lib/mongodb

    chown mongodb:mongodb /tmp/mongodb-27017.sock

    【讨论】:

      【解决方案3】:

      在 MongoDB 3.6 中,@Chlebta 提出的括号对我不起作用,返回错误:

      mongod.service:主进程退出,code=exited,status=2/INVALIDARGUMENT

      我的错误是用逗号和空格分隔 IP 地址。地址之间只能有逗号:

      bindIp: 127.0.0.1,X.X.X.X,Y.Y.Y.Y
      

      【讨论】:

      • bindIp 没有大写的“P”。即使进行了更正,我仍然卡住了。
      • 是的。拼写错误已修复,谢谢。此外,在文件中查找选项卡。 conf 文件仅适用于空格。
      • 我会检查的。我认为问题在于这些 IP 需要在同一个网络上,并且我正在尝试允许外部 IP 访问数据库。
      • 好的。这应该是可能的。使用您正在编辑 conf 文件的机器的 IP 地址,而不是外部机器的地址。我在 Digital Ocean 中有 3 台服务器通过 VPN 进行通信,所以我使用了私有 IP。
      • 嗯,这就是我已经在做的事情了。但是编写我正在编辑 conf 文件的机器的 IP 与编写 127.0.0.1 几乎相同,对吧?这是我的全部问题。我有一台装有 Express/Nodejs 服务器和 MongoDB/Mongod 守护程序的机器。如果我在 conf 文件中写 BindIp : www.myAddress.com ,服务器与数据库的对话就好了。我想要做的是从另一台没有bindAllIp : true参数的计算机上使用Mongo Compass浏览我的数据库。
      【解决方案4】:

      Ubuntu 20.04 和 MongoDB 服务器版本 4.4.2 的更新...

      我的问题最终是我试图使用我机器的 公共 IP 地址。

      一旦我指定了我的私有 IP 地址,一切都开始工作了。 mongod 服务启动时没有任何错误,我现在可以从远程机器连接到它。

      在 Ubuntu 上,您可以使用以下命令获取您的私有 IP 地址:

      hostname -I | awk '{print $1}'
      

      这是我在 /etc/mongod.conf 中的内容(仅显示相关部分和部分私有 IP 地址):

      net:
        port: 27017
        bindIp: 127.0.0.1, 172.##.##.##
      
      security:
        authorization: enabled
      

      请注意,将括号括在两个 IP 地址(如已接受的答案中)对我不起作用,并导致 mongod 状态代码为 2(实际上是 mongod.conf 中的语法错误 文件)。逗号后面的空格现在似乎也可以使用,尽管不是必需的。

      【讨论】:

      • 这也在 18.04 为我修复了它
      【解决方案5】:

      我只是重新启动系统(sudo reboot),它对我有用。我不知道为什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 2013-01-12
        • 2017-08-08
        • 2020-05-23
        • 2016-12-30
        • 2021-11-30
        相关资源
        最近更新 更多