'Failed to unlink socket file" error in MongoDB 3.0

后端 未结 8 1447
独厮守ぢ
独厮守ぢ 2020-11-28 05:14

I am new to MongoDB. I am trying to install MongoDb 3.0 on Ubuntu 13.0 LTS, which is a VM on Windows 7 Host. I have installed MongoDB successfully (packages etc.), but when

相关标签:
8条回答
  • 2020-11-28 05:57

    For UNIX-based operating systems, as an alternative to the answer provided by Bastronaut, you could also specify the .sock file to be saved to a folder over which mongod has full user rights (corresponding to the way you are running mongod), that way mongod will also be able to remove the .sock file upon shutdown. The default folder to which the .sock file is saved is '/tmp'. To specify another folder, use a custom mongodb configuration file, for instance 'mongodb.conf', and add the following to it:

    net:
      unixDomainSocket:
        pathPrefix: "anotherFolder"
    

    After which you can run mongod with the command:

    $ mongod --config /path/to/mongodb.conf
    

    You can read the documentation on: https://docs.mongodb.org/manual/reference/configuration-options/#net.unixDomainSocket.pathPrefix

    0 讨论(0)
  • 2020-11-28 05:58

    Alternative to the answer provided by KurioZ7, you can simply set the permissions of the .sock file to the current user:

    sudo chown `whoami` /tmp/mongodb-27017.sock
    

    This does the trick for me if I want to run mongod without sudo. If I delete the file like in KurioZ7s answer, I will simply get the same error the next time I restart my machine.

    0 讨论(0)
  • 2020-11-28 06:01

    This issue occurs when you use the command

    mongod
    

    Before using the command

    sudo service mongod start
    

    To fix the issue, either:

    Set appropriate permissions on the file:

    /tmp/mongodb-27017.sock
    

    OR

    Remove the file

    /tmp/mongodb-27017.sock
    

    Run

    sudo service mongod start && mongod
    
    0 讨论(0)
  • 2020-11-28 06:04

    The most likely cause for this was that the mongod process was at some point started by the root user. The socket file (/tmp/mongodb-27017.sock) was therefore owned by the root user. The mongod process usually runs under its own dedicated user, and that user did not have the permissions to delete that file.

    The solution, as you already found out, was to delete it. Then mongodb was able to recreate it with the correct permissions. This should persist after reboot, as long as mongodb is started using the init scripts, or under the correct user account.

    0 讨论(0)
  • 2020-11-28 06:04

    Change the ownership mongodb-27017.sock file in /tmp directory and start the mongod again.

    cd /tmp
    
    
    sudo chown mongodb:mongodb mongodb-27017.sock
    
    sudo systemctl start mongod
    
    0 讨论(0)
  • 2020-11-28 06:07

    I have fixed this issue myself, by deleting the mongodb-27017.sock file . I ran the service after deleting this file, which worked fine. However, I am still not sure the root cause of the issue. The output of the command ls - lat /tmp/mongodb-27017.sock is now

    srwx------ 1 mongodb nogroup 0 Apr 23 06:24 /tmp/mongodb-27017.sock
    
    0 讨论(0)
提交回复
热议问题