代码之家  ›  专栏  ›  技术社区  ›  jdog

为什么mongod和mongo命令不能启动?[副本]

  •  -1
  • jdog  · 技术社区  · 5 年前

    所以我打开一个终端,我想我在你所谓的主目录,因为当我做“ls”时,我看到的是桌面应用程序电影音乐图片文档和库的文件夹。

    所以我做了一个

    mkdir -p /data/db
    

    首先,它说许可被拒绝。我试了半个小时,终于:

    mkdir -p data/db
    

    工作。当I“ls”时,数据目录和嵌套在其中的db文件夹确实存在。

    然后我启动mongod,它抱怨找不到data/db

    我做错什么了吗?

    现在我已经完成了

    sudo mkdir -p /data/db
    

    当我做一个“ls”时,我看到了data dir和db dir。但在db dir中,绝对没有任何内容,当我现在运行mongod时

    Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
    Sun Oct 30 19:35:19 dbexit: 
    Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
    Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
    Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
    Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
    Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
    Sun Oct 30 19:35:19 dbexit: really exiting now
    

    sudo chown mongod:mongod /data/db
    
    chown: mongod: Invalid argument
    

    谢谢大家!

    0 回复  |  直到 6 年前
        1
  •  665
  •   Tilo    7 年前

    /data/db意味着它直接位于“/”根目录下,而您创建的“data/db”(不带前导/)可能就在另一个目录中,例如“/root”homeditory。

    您需要将此目录创建为根目录

    要么你需要使用 sudo ,例如。 sudo mkdir -p /data/db

    或者你需要这样做 su - 成为超级用户,然后用 mkdir -p /data/db


    MongoDB还提供了一个选项,您可以在另一个位置创建数据目录,但这通常不是一个好主意,因为它只会使DB recovery之类的事情稍微复杂一些,因为您总是需要手动指定DB路径。我不建议你那样做。


    您收到的错误消息是 “无法创建/打开锁文件:/data/db/mongod.锁错误号:13许可“拒绝” . 您创建的目录似乎没有正确的权限和所有权-- 它需要由运行MongoDB进程的用户编写。

    要查看“/data/db/”目录的权限和所有权,请执行以下操作:

    $ ls -ld /data/db/
    drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/
    

    左侧“drwxr-xr-x”显示用户、组和其他人的权限。

    如果您的“/data/db”目录没有上述权限和所有权,请执行此操作 :

    首先检查您的mongo用户有哪些用户和组:

    # grep mongo /etc/passwd
    mongod:x:498:496:mongod:/var/lib/mongo:/bin/false
    

    您应该在/etc/passwd中有一个mongod条目,因为它是一个守护进程。

    sudo chmod 0755 /data/db
    sudo chown -R 498:496 /data/db    # using the user-id , group-id
    

    也可以使用用户名和组名,如下所示: (它们可以在/etc/passwd和/etc/group中找到)

    sudo chown -R mongod:mongod /data/db 
    

    这应该能让它工作。。

    在下面的评论中,有些人这样说:

    sudo chown -R `id -u` /data/db
    sudo chmod -R go+w /data/db
    

    sudo chown -R $USER /data/db 
    sudo chmod -R go+w /data/db
    

    点击此处以更好地理解目录权限的含义:

    http://www.perlfect.com/articles/chmod.shtml

        2
  •  119
  •   Community miroxlav    7 年前

    在得到和Nik一样的错误之后

    反引号 ) Ubuntu Forums

    sudo chown$用户/数据/数据库

        3
  •  89
  •   Iman Mohamadi    9 年前

    这对我很有用,可以在评论中找到:

    sudo chown -R $USER /data/db
    
        4
  •  77
  •   Connor Leech    9 年前

    创建文件夹。

    sudo mkdir -p /data/db/
    

    请授予您对该文件夹的权限。

    sudo chown `id -u` /data/db
    

    mongod 没有 sudo . 在OSX约塞米蒂工作

        5
  •  37
  •   orluke saimadhu.polamuri    8 年前

    $ brew services restart mongodb $ brew services stop mongodb

    然后我跑了 mongod --config /usr/local/etc/mongod.conf ,问题就消失了。

        6
  •  26
  •   loreii    9 年前

    如果您运行mongo而不带参数,则假定您在生产机器上运行,因此它将使用默认位置。

    对于使用自己的数据库(dev或其他数据库):

    ./bin/mongod --dbpath ~/data/db
    
        7
  •  23
  •   Gal Bracha    9 年前

    工作人员 是团体吗

    sudo mkdir -p /data/db
    sudo chmod +x+r+w /data/db/
    sudo touch /data/db/mongod.lock
    sudo chown YOUR_USER_NAME:staff /data/db
    sudo chmod +x+r+w /data/db/mongod.lock
    sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock
    
        8
  •  8
  •   Tal Delbari    6 年前

    因为它找不到配置文件,所以它试图在/data/DB(一个不存在的文件夹)中找到DB文件。 但是,配置文件仍然可用,因此我确保进程对配置文件具有权限,并使用--config标志运行mongod进程,如下所示:

    mongod --config /etc/mongod.conf
    

    storage:
      dbPath: /var/lib/mongodb
    

    这就是进程如何再次找到真正的DB文件夹。

        9
  •  8
  •   emrys57    6 年前

    我做的

    brew install mongodb
    

    在2018年2月1日,这让我 mongodb 版本3.6.2。

    answer from orluke 上面,我试着

    $ brew services restart mongodb
    

    一切都开始了。我的 mongoose.createConnection() 我想怎么叫就怎么叫。这个 GUI MongoDB Compass ,社区版本,将连接。我用指南针看天空 local.startup_log 收藏。其中有一个文档,我刚刚启动mongoDB服务的日志,而且

    cmdLine:Object
        config:"/usr/local/etc/mongod.conf"
    

    确实有这样一个文件:

    $ more /usr/local/etc/mongod.conf
    systemLog:
      destination: file
      path: /usr/local/var/log/mongodb/mongo.log
      logAppend: true
    storage:
      dbPath: /usr/local/var/mongodb
    net:
      bindIp: 127.0.0.1
    

    /usr/local/var/mongodb 有很多模糊文件的目录。所以现在的安装似乎就是这样。

    brew services restart 将服务设置为在登录时运行。所以我做了

    brew services stop mongodb
    brew services start mongodb
    

    希望重启后能重新启动。事实上,它做到了。事实上,现在,我认为在初始安装之后正确的做法是

    brew services start mongodb
    

    这将启动服务,并在重新启动后重新启动它。

        10
  •  7
  •   blubberbo    4 年前

    我只想在这里指出,如果你尝试这个,你会遇到 mkdir: /data/db: Read-only file system ,请看这条评论,它帮助了我: https://stackoverflow.com/a/58895373 .

    这样,如果有人在这个答案上并且控制F为“只读”,他们就会看到这个

        11
  •  6
  •   Russell    13 年前

    您的命令将在当前文件夹中创建目录结构,而不是在您的计算机的根目录中(这是所缺少的) /

    / sudo ,是“超级用户do”的缩写。然后会要求您输入密码。

    $ sudo mkdir -p /data/db
    
        12
  •  6
  •   EhevuTov    13 年前

    您正在尝试创建一个没有根目录访问权限的目录。

    为了测试mongodb,我只使用我的用户目录中的一个目录,比如:

    cd
    mkdir -p temp/
    mongod --dbpath .
    

        13
  •  6
  •   cloudberry    12 年前

    我用我的窗口管理器创建了/data/db文件夹,解决了同样的问题。一开始我试着通过终端来实现,为了在根目录中创建一个文件夹,我不得不使用sudo。

    我只是使用Finder进入根目录,并使用newfolder创建了一个新文件夹。完全为我工作。

        14
  •  5
  •   Justin Jenkins    13 年前

    你需要创造 ... 这是一个名为 /数据/ 在你的根(即。 )其中的子文件夹 /分贝/ ...

    由于需要使用 要在MacOS的根目录中创建目录,sudo允许您以管理员身份运行命令。

    所以,运行这个。。。

    $ sudo mkdir -p /data/db
    

        15
  •  4
  •   whiny_nil    10 年前

    只是一个简短的提示:

    如果您尝试在不更改权限的情况下运行mongod,您可能会遇到问题mongod.锁/data/db目录中的文件(以及其他一些文件)。即使您更改了/data/db目录的权限以授予$USER访问权限,您仍然会得到“Unable to create/open lock file:/data/db”/mongod.锁错误号:13许可“拒绝”错误。运行ls-al/data/db,您可能会看到各个文件的权限仍然设置为root for user,而不是$user。你应该移除mongod.锁文件,以及其他文件。然后,当您再次运行mongod时,一切都应该正常工作,您可以通过再次运行ls-al来验证文件权限与目录权限是否匹配。

        16
  •  4
  •   Ericgit Praneeth Vithanage    4 年前

    在根目录中创建目录

    sudo mkdir -p /data/db
    

    sudo chown -R $USER /data
    

    mongod
    

    sudo mongod ,您不需要每次都输入密码,但对于真正的项目,您应该使用 sudo mongod公司 ,不给普通用户权限!

        17
  •  3
  •   Cloudish123    5 年前

    当我尝试启动mongodb时,我一直遇到以下错误。

    "shutting down with code:100" 
    

    我使用了以下命令:

    ./mongod --dbpath=~/mongo-data
    

    ./mongod --dbpath ~/mongo-data
    

        18
  •  2
  •   Devendra Bhat    6 年前

    到目前为止,我还认为我们需要创建/data/db文件夹来启动mongod命令。

    但最近我尝试用service命令启动mongod,它对我很有用,而且不需要创建/data/db目录。

    service mongod start
    

    service mongod status
    
        19
  •  2
  •   Mehedi Abdullah    5 年前

    这个解决方案解决了我的问题

    1. 将目录设为

      sudo mkdir-p/数据/db

    2. 这将创建一个名为db的目录,然后尝试从命令开始

      sudo mongod公司

    如果您在启动mongod时遇到另一个错误或问题,您可能会发现问题如下

    如果发现另一个错误,则必须通过键入terminal as终止mongod的运行进程

    ps ax | grep mongod
    sudo kill ps_number
    

    找到mongod运行端口并终止进程。 另一种方法是在启动mongod as时创建一个specefic端口

    sudo mongod --port 27018
    
        20
  •  2
  •   Suraj Rao Akhlaque Karim    4 年前

    brew services start mongodb-community
    
        21
  •  1
  •   Prakhar Agrawal    9 年前

    然后简单地键入

    “sudo chown-R ID名称 /数据/db”

    这对我有好处!

        22
  •  1
  •   illcrx    7 年前

    在MongoDB的最新版本中,我有3.2.10,它被存储为默认值

    /var/lib/mongodb

        23
  •  1
  •   Jeremy Piednoel    4 年前

    从MongoDB 4.4开始,MongoDB数据库工具现在与MongoDB服务器分开发布。

    您需要下载: https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools

    然后你把所有的文件复制到 /usr/bin

        24
  •  0
  •   a.t.    5 年前

    在(重新)安装tools包之后,我在Windows10设备上遇到了一个类似的错误;

    解决方案 mongod.exe (mongoDB服务器)。

    我想我可以把它留给那些在Windows设备上有相同搜索条件的人。

        25
  •  0
  •   mtyson    4 年前

    有一种非常愚蠢的方法来制造这个问题,我开创了这个方法:

    1) 暂时不要安装mongo 2) 返回时服务器没有运行 3) 尝试启动它,但这次不要使用sudo 4) mongo找不到数据/db/,因为它现在在用户home dir而不是su home dir中查找

    是的,这是真的很愚蠢,但如果它已经有一段时间,因为你在系统上,它可以绊倒你。

    简而言之:确保使用相同的主目录运行mongo

        26
  •  0
  •   Suraj Rao Akhlaque Karim    4 年前

    蒂洛的答案一直对我有用,直到现在:

    sudo chown -R 126:135 /data/db 
    

    我不得不使用:

    sudo chown -R $USER /data/db
    
        27
  •  0
  •   Wernfried Domscheit    3 年前

    MongoDB可能会混淆 dbPath 文件夹。

    mongod 没有 dbpath /data/db

    但是,当您将其作为服务启动时,例如。 systemctl start mongod 然后读取配置文件,通常是 /etc/mongod.cfg

    站台 程序包管理器 违约 storage.dbPath
    RHEL/CentOS和亚马逊 /var/lib/mongo
    苏塞 齐珀 /变量/lib/mongo
    Ubuntu和Debian 恰当的 /var/lib/mongodb
    马科斯 酿造 /usr/local/var/mongodb

        28
  •  0
  •   Dharman Sebastian    3 年前

    Mongodb运行时 mongod ~/data/db 文件夹作为设备根文件夹中db的路径。

    我通过创建一个 ~/data 通过运行 mkdir ~/data

    ls pwd 应该给你 /Users/username/data

    sudo mongod --dbpath=/Users/username/data

    这是为了我,当我跑的时候 蒙哥德