无法创建/打开锁定文件:/data/mongod.lock errno:13权限被拒绝

Tam*_*mpa 184 mongodb

如何让mongo在ec2上使用已安装的驱动器?我真的不明白.我在ec2上附加了一个卷,以root身份格式化驱动器并以root身份启动,但作为root我无法访问?我在ubuntu 12.04上运行.没有其他mongo正在运行

我看到mongo在/ data ie/data/db中创建了一个'db'目录

cd /
ls -al
drwxr-xr-x  4 root root  4096 Mar  5 16:28 data

cd /data
ls -al
total 28
drwxr-xr-x  4 root root  4096 Mar  5 16:28 .
drwxr-xr-x 24 root root  4096 Mar  5 16:28 ..
drwxr-xr-x  2 root root  4096 Mar  5 16:28 db
drwx------  2 root root 16384 Mar  5 16:20 lost+found


sudo mkfs.ext3 /dev/xvdh
sudo mkdir /data
sudo su - -c 'echo "/dev/xvdh %s auto noatime 0 0" | sudo tee -a /etc/fstab'
sudo mount /data

sudo service mongodb start
mongodb start/running, process 17169

sudo ps -ef | grep mongod
ubuntu   15763 15634  0 16:32 pts/2    00:00:00 tail -f mongodb.log
ubuntu   18049 15766  0 16:43 pts/3    00:00:00 grep --color=auto mongod


Tue Mar  5 16:33:15 [initandlisten] MongoDB starting : pid=15890 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:33:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:33:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:33:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:33:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:33:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:33:15 dbexit: 
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:33:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:33:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:33:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:33:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:33:15 dbexit: really exiting now
Run Code Online (Sandbox Code Playgroud)

下面是我删除锁定文件时重新启动....

Tue Mar  5 16:59:15 [initandlisten] MongoDB starting : pid=21091 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:59:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:59:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:59:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:59:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:59:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:59:15 dbexit: 
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:59:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:59:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:59:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:59:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:59:15 dbexit: really exiting now
Run Code Online (Sandbox Code Playgroud)

Hai*_*mei 478

我使用这种方法来解决问题:

sudo chown -R mongodb:mongodb /data/db
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是做什么的?它确实有效,但很想明白:) (11认同)
  • 添加`-R`选项,它是完美的:) (8认同)
  • 事实证明,反引号存在问题.尝试运行```sudo chown $ USER/data/db```而不是原始命令. (8认同)
  • 那是:sudo chown -R`id -u`/data/db for the unititiated.:) (7认同)
  • 这确实是正确的答案.@Tampa你应该接受这个答案.顺便说一句 - 你不需要`id -U`或`$ USER`的东西.mongo有自己的用户/组.你可以而且应该硬编码mongodb:mongodb.所以命令只是`sudo chown -R mognodb:mognodb/data/db` (7认同)
  • @Jackson_Sandland是的,我有同样的想法,你走了!欢呼的家伙:D http://stackoverflow.com/questions/32383934/meaning-of-sudo-chown-r-id-u-data-db/32384204#32384204 (3认同)
  • 也适用于OSX (2认同)

小智 113

我在Ubuntu ec2实例上遇到了同样的问题.我在第7页上关注这篇亚马逊文章:

http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

Mongodb路径/etc/mongodb.conf设置为/var/lib/mongodb(主安装位置和工作).当我改为/data/db(EBS卷)我得到'错误:13权限被拒绝'.

  1. 首先,我跑了sudo service mongodb stop.
  2. 然后我常常ls -la看到mongodb分配给/var/lib/mongodb(现有路径)的组和所有者,并且我更改了/data/db(新路径)chownchgrp匹配.(例如:sudo chown -R mongodb:mongodb /data/db)
  3. 然后,我更新的路径etc/mongodb.conf,以/data/db在删除旧的蒙戈文件/var/lib/mongodb目录.
  4. 然后我跑了sudo service mongodb start,等了大约一分钟.如果您尝试立即连接到27017,则无法连接.
  5. 经过一分钟检查/data/db(EBS卷)和mongo应该放置一个日志,mongod.lock,local.ns,local.0等.如果没有尝试sudo service mongodb restart并在一分钟后检查.

我只花了一个多小时.更改组和删除旧文件可能没有必要,但这对我有用.

这是关于将ebs卷安装到ec2实例的精彩视频:

http://www.youtube.com/watch?v=gBII3o3BofU

  • 我正在努力解决这个问题,并意识到如果你列出你用ls -lahZ列出你的目标文件夹它会给你安全上下文,mongo数据文件夹的上下文应该设置为:"sudo chcon -R -u system_u -t mongod_var_lib_t/folder/data"除了明显的权限和用户:组合之外.希望能帮助到你. (8认同)

小智 81

就我而言(AWS EC2实例,Ubuntu)帮助:

$ sudo mkdir -p /data/db/
$ sudo chown `USERNAME` /data/db
Run Code Online (Sandbox Code Playgroud)

之后一切正常.

  • 这是最好的答案,很可能是运行mongod的用户的权限问题 (6认同)
  • 是的,这是最好的答案 (2认同)

jul*_*oup 50

您只需要授予对/data/db文件夹的访问权限.

输入sudo chown -R <USERNAME> /data/db,用<USERNAME>您的用户名替换.

您可以通过输入找到您的用户名whoami.


Eve*_*ers 12

我在本教程之后使用Ubuntu 14.04在EC2上安装了带有EBS的mongodb:

http://docs.mongodb.org/ecosystem/platforms/amazon-ec2/

但是,我没有建议的chown:

sudo chown -R mongodb:mongodb /data /log /journal
Run Code Online (Sandbox Code Playgroud)

解决问题

  • 是的,似乎所有者必须是"mongodb"而不是"root"的东西. (2认同)

Ven*_*SGS 10

我有类似的问题,实际的原因是我的上一次尝试已经运行了mongod会话.

我跑了

killall mongod
Run Code Online (Sandbox Code Playgroud)

其他一切都按预期运行.

killall命令会向具有真实UID的所有进程发送TERM信号.所以这会杀死所有正在运行的mongod实例,这样你就可以开始自己的了.


Eug*_*e G 6

我有一个类似的问题,并遵循上面关于使用sudo chown等更改所有者的所有说明.我仍然有一个mongodb实例在更改后在后台运行.运行

ps auxw | grep mongo 
Run Code Online (Sandbox Code Playgroud)

向我展示了使用mongo在后台运行未正确关闭的其他任务.然后我对所有正在运行的程序运行kill,然后可以启动我的服务器.


小智 6

对于mac用户:
运行ls -ld/data/db /
输出应该像drwrx-xr-x 20 singh wheel 680 21 Jul 05:49/data/db /
其中singh是所有者而wheel是它所属的组.
运行sudo chown -R singh:wheel/data/db
运行mongod


小智 6

截至今天,我试图通过创建/打开锁定文件:/data/db/mongod.lock错误:13权限被拒绝是一个mongod实例已经运行?,终止,并尝试上面发布的所有答案解决这个问题,因此添加没有任何结果

sudo chown -R mongodb:mongodb/data/db

除非我将当前用户权限添加到位置路径

sudo chown $ USER/data/db

希望这有助于某人.我刚刚在我的pi上安装了Mongo DB.干杯!


Cas*_*ray 5

在我的情况下,删除 mongodb.lock 文件不是问题。我这样做了,但收到有关正在使用的端口的错误:[initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017。我在这里找到了另一个解决方案:无法使用终止进程的指令启动 mongodb 本地服务器

  1. 从 netstat 找出哪个进程正在运行 mongodb 端口 (27017)

    sudo netstat -tulpn | grep :27017

    输出将是:tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412/mongod

  2. 杀死相应的进程。

    sudo kill 1412 (将 1412 替换为您在步骤 1 中找到的进程 ID)

我能够再次成功启动mongodb。我相信我的仍然因不当关闭而运行。