【问题标题】:SocketException: Address already in use MONGODBSocketException:地址已在使用 MONGODB
【发布时间】:2018-06-07 03:20:46
【问题描述】:

我在尝试运行 mongodb 时发现了这个错误。我通过自制软件安装它。请帮忙

Agungs-MacBook-Pro:~ agungmahaputra$ mongod
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] MongoDB starting : pid=5189 port=27017 dbpath=/data/db 64-bit host=Agungs-MacBook-Pro.local
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] db version v3.6.0
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] allocator: system
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] modules: none
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] build environment:
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] options: {}
2017-12-26T15:31:15.911+0700 E STORAGE  [initandlisten] Failed to set up listener: SocketException: Address already in use
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] now exiting
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] shutting down with code:48
Agungs-MacBook-Pro:~ agungmahaputra$

【问题讨论】:

    标签: mongodb macos homebrew


    【解决方案1】:

    您已经在27017 使用的端口mongodb 中运行了一个进程。因此,您要么需要停止该端口中的进程,要么尝试使用不同的端口号。

    试试mongod --port 27018

    您可以更改您选择的端口号。

    编辑:

    您也可以使用停止所有正在运行的 mongo 服务器实例 @Dassi Orleando 在 cmets 中提到的 sudo killall mongod。 并运行mongod

    【讨论】:

    • 好答案,我们实际上可以通过点击以下命令关闭以前的 mongo 实例:sudo killall mongod。
    【解决方案2】:

    您可以杀死以前的 mongod 实例并启动新的实例。

    要杀死之前的 mongod 实例,首先通过键入搜索在您的机器上运行的任务列表,

    sudo lsof -iTCP -sTCP:LISTEN -n -P
    

    搜索 mongod COMMAND 及其 PID 和类型,

    sudo kill <mongo_command_pid>
    

    现在通过键入启动您的 mongod 实例,

    mongod
    

    可以看到MongoDB运行成功了。

    【讨论】:

    • 为我工作!不错的答案!
    • 可能需要修改才能在 PC 上工作,但对于 mac,这是完美的。 Tnx
    • 在我的情况下,(Centos 7 Mongo 4.0.10)运行的服务是实际的 mongo 守护进程,杀死它只会导致不同的问题。只需要使用'mongo'命令而不是'mongod'
    • 这个答案比公认的好很多
    • 惊人的答案。我希望我可以两次投票给你。 :)
    【解决方案3】:

    如果您使用的是 mongodb 版本 4.*

    在默认设置中,应该有一个“db”文件夹“/data/db”具有必要的权限。

    检查 MongoDB 服务是否已启动

    brew services list
    

    如果没有则运行

    brew services start mongodb
    

    运行 mongo 而不是 mongod

    【讨论】:

    • 谢谢。就我而言,(Centos 7 Mongo 4.0.10)就是这样。
    【解决方案4】:

    首先,使用以下命令关闭正在运行的服务器:

    mongod --shutdown
    

    然后运行:

    sudo mongod
    

    【讨论】:

      【解决方案5】:

      确保错误出在端口上,如果使用 macos catalina 报告了 ~/data/db 的问题,这也会导致此问题。

      【讨论】:

      • 是的,我遇到了一个问题,我肯定 mongo 没有运行但仍然出现此错误
      【解决方案6】:

      我解决了这个问题,将下面的命令粘贴到命令行中以关闭 mongo 的服务器。

      sudo pkill -f mongod
      

      "sudo" (Super User Do) 运行命令管理员权限,所以它会询问你的用户密码

      【讨论】:

        【解决方案7】:

        在这里总结其他(@Tony Roczz,@Balasubramani M)回答:

        根本原因

        错误:Failed to set up listener: SocketException: Address already in use

        意思是:

        • 以前运行过mongodb
          • 可能使用默认端口27017

        解决方案

        (大多数情况下)杀死并重新启动mongod

        杀死mongod

        两种方法:

        • 使用 killall
          • killall mongod
        • 按 PID 杀死
          • 找到mongod PID
            • 方法一:ps aux | grep mongod
            • 输出可以这样看:limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
            • 方法二:lsof -iTCP -sTCP:LISTEN -n -P
            • 输出可以这样看:mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
          • 按 PID 杀死:kill -9 425

        重新启动mongod

        • 大多数情况:mongod
        • 一些特殊情况
          • brew services start mongodb-community
            • 用于在 Mac 中安装社区版本:brew install mongodb-community

        (对于某些人)使用另一个端口运行

        • 用另一个端口运行:mongod --port 27018
          • 仅适用于想要同时运行多个 mongod 服务器的用户

        补充说明

        正在运行的 mongodb 正在使用哪个端口?

         lsof -iTCP -sTCP:LISTEN -n -P
        COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
        mongod      425 limao   10u  IPv4 0xab744305e75263cf      0t0  TCP 127.0.0.1:27017 (LISTEN)
        

        可以看到27017是当前运行的mongodb端口。

        如何检查/确保 mongod 正在运行

        • 检查mongod状态:
          • ps aux | grep mongod
            • 输出可以看到mongod服务
          • brew services list
            • 如果由brew 安装并由brew 启动

        【讨论】:

          【解决方案8】:

          运行以下命令后:

          sudo lsof -iTCP -sTCP:LISTEN -n -P
          

          搜索 mongod COMMAND 及其 PID 和类型,

          sudo kill <mongo_command_pid>
          

          重新启动 mongod,它仍然失败并出现同样的错误“SocketException: Address already in use MONGODB”。

          服务器昨天重新启动,然后发生了这种情况。

          【讨论】:

            【解决方案9】:

            就这一条命令

            sudo pkill -f mongod

            【讨论】:

            • 这与 Agustín Marí 的回答中的 相同。除了你的答案是在命令之前使用粗体。
            【解决方案10】:

            这听起来很明显,但您应该检查 mongodb 是否已经在运行。 因此,不要先通过运行来启动数据库:

            sudo mongod
            

            直接运行试试:

            mongo
            

            【讨论】:

              【解决方案11】:

              如果您的 mongod 进程已经关闭,只需删除 /tmp 中的 .sock 文件:

              我的mongod已经down了,所以没有出现在:

              lsof -iTCP -sTCP:LISTEN -n -P
              

              错误是:

              [root@ol7db19c1 ~]# mongod -f /etc/csrs_2.conf
              about to fork child process, waiting until server is ready for connections.
              forked process: 6721
              ERROR: child process failed, exited with error number 48
              To see additional information in this output, start without the "--fork" option.
              

              在日志文件(/var/mongodb/db/csrs2.log)中:

              2020-07-05T16:03:59.354-0300 E  STORAGE  [initandlisten] Failed to set up listener: SocketException: Address already in use
              

              所以,查找套接字锁定:

              ls -ltra /tmp|grep .sock
              

              然后删除它(在生产环境中小心操作):

              rm -f mongodb-26002.sock
              

              祝你好运!

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-01-04
                • 1970-01-01
                • 1970-01-01
                • 2021-08-26
                • 1970-01-01
                • 1970-01-01
                • 2023-03-08
                • 1970-01-01
                相关资源
                最近更新 更多