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

时间:2013-03-05 16:44:38

标签: mongodb

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

我看到mongo在/ data中创建了一个'db'目录,即/ data / 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

下面是我删除锁定文件后重启....

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

28 个答案:

答案 0 :(得分:475)

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

sudo chown -R mongodb:mongodb /data/db

答案 1 :(得分:108)

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

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

/etc/mongodb.conf中的Mongodb路径设置为/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目录中的旧mongo文件。
  4. 然后我跑了sudo service mongodb start并等了大约一分钟。如果您尝试立即连接到27017,则无法使用。
  5. 一分钟后检查/data/db(EBS卷),mongo应该放置日志,mongod.lock,local.ns,local.0等。如果没有,请尝试sudo service mongodb restart并查看一分钟后面。
  6. 我只花了一个多小时。可能没有必要更改组和删除旧文件,但这对我有用。

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

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

答案 2 :(得分:80)

在我的案例中(AWS EC2实例,Ubuntu)帮助:

$ sudo mkdir -p /data/db/
$ sudo chown `USERNAME` /data/db

之后一切正常。

答案 3 :(得分:50)

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

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

您可以输入whoami找到您的用户名。

答案 4 :(得分:12)

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

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

但不是我建议的chown:

sudo chown -R mongodb:mongodb /data /log /journal

解决问题

答案 5 :(得分:10)

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

我跑了

killall mongod

其他一切都按预期运行。

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

答案 6 :(得分:6)

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

没有任何效果
  

sudo chown -R mongodb:mongodb / data / db

除非我通过

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

sudo chown $ USER / data / db

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

答案 7 :(得分:6)

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

ps auxw | grep mongo 

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

答案 8 :(得分: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

答案 9 :(得分:4)

在我的情况下删除mongodb.lock文件不是问题。我这样做了并且有关于正在使用的端口的错误:[initandlisten] listen():bind()失败错误:98地址已经用于socket:0.0.0.0:27017。我在这里找到了另一个解决方案:unable to start mongodb local server,其中包含杀死进程的说明:

  1. 从netstat中了解哪个进程正在运行mongodb port(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)

  3. 我能够再次成功启动mongodb。我相信我的关闭仍然是不正常的。

答案 10 :(得分:4)

对于那些在Windows上使用任务管理器遇到此错误的人,请结束&#34; mongod.exe&#34;的实例。正在运行。完成后,永久删除mongo.lock文件并运行mongod.exe。它应该在那之后完美地运作。

答案 11 :(得分:3)

我的mongo(3.2.9)安装在Ubuntu上,我的日志文件有以下几行:

2016-09-28T11:32:07.821+0100 E STORAGE  [initandlisten] WiredTiger (13) [1475058727:821829][6785:0x7fa9684ecc80], file:WiredTiger.wt, connection: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied 
2016-09-28T11:32:07.822+0100 I -        [initandlisten] Assertion: 28595:13: Permission denied 
2016-09-28T11:32:07.822+0100 I STORAGE  [initandlisten] exception in initAndListen: 28595 13: Permission denied, terminating

2016-09-28T11:32:07.822 + 0100 I CONTROL [initandlisten] dbexit:rc:100

所以问题出在/ var / lib / mongodb文件夹的权限上。

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • 重新启动服务器

修正了它,虽然我确实认识到它可能不太安全(它是我自己的开发盒我在我的情况下),但是在数据库和身份验证工作之后有点改变。

答案 12 :(得分:2)

在Mycase中 在mongodb版本2.6.11中,默认数据库目录为/var/lib/mongodb/

  1. $ sudo chown -R id -u / var / lib / mongodb /

  2. $ sudo chown -R id -u /var/lib/mongodb/mongod.lock

  3. $ sudo /etc/init.d/mongod stop

  4. $ sudo /etc/init.d/mongod start

答案 13 :(得分:1)

这就是我为解决问题所做的工作:

$ sudo mkdir -p / data / db

$ export PATH = / usr / local / Cellar / mongodb / 3.0.7 / bin:$ PATH

$ sudo chown -R id -u / data / db

然后开始mongo ......

$ mongod的

答案 14 :(得分:1)

在Windows10上安装mongod命令后遇到了同样的问题。 我停止了mongodb服务,然后重新启动了它。像魅力一样工作

用于停止mongodb服务的命令(在Windows中):net stop mongodb

启动mongodb服务器的命令:mongod --dbpath PATH_TO_DATA_FOLDER

答案 15 :(得分:1)

我杀了mongod之后,我遇到了同样的问题:无法启动mongod。

$> sudo kill `pidof mongod`

2015-08-03T05:58:41.339+0000 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongodbtest/replset/data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

我直接删除锁后,我可以重启mongod进程。

$>  rm -rf /data/mongodbtest/replset/data/mongod.lock

答案 16 :(得分:1)

在我的情况下,通过删除 日志 文件解决了该问题。

sudo rm /log/mongod.log

虽然错误消息特指 lock 文件:

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating

答案 17 :(得分:1)

在带有Mongo 2.2.4实例的Fedora 18上,通过以root身份调用setenforce 0来禁用SELinux,我能够解决类似的错误。

BTW,这是一个企业环境,而不是Amazon EC2实例,但症状相似。

答案 18 :(得分:0)

在通过{{ __SELF__.settings.text_top_form|raw}} <form action="#" class="appointment-form ftco-animate" id="simpleContactForm" data-request="{{ __SELF__ }}::onFormSubmit"> <div id="simple_contact_flash_message"></div> <div class="d-md-flex"> <div class="form-group"> <input type="text" id="name" placeholder=" Name" name="name" class="form-control" required > </div> <div class="form-group ml-md-4"> <input type="email" id="email" placeholder="Email" name="email" class="form-control" required > </div> </div> <div class="d-md-flex"> <div class="form-group ml-md-4"> <input class="form-control" placeholder="Phone" type="text" id="phone" name="phone" /></div> <div class="form-group ml-md-4"> <input type="text" id="subject" name="subject" class="form-control" placeholder="Subject" required> </div> </div> <div class="d-md-flex"> <div class="form-group"> <textarea class="form-control" cols="30" id="message" name="message" placeholder="Message" rows="2"> </textarea> </div> <div class="form-group ml-md-4"><input class="btn btn-primary py-3 px-4" type="submit" value="Submit" /> </div> </div> </form> 检查端口之后,如果在其上运行smth,则出现类似的错误,已修复:删除所有记录(在我的情况下为目录<section class="ftco-section ftco-consult ftco-no-pt ftco-no-pb" data-stellar-background-ratio="0.5" style="background-image: url(images/bg_5.jpg);"> <div class="overlay">&nbsp;</div> <div class="container"> <div class="row justify-content-end"> <div class="col-md-6 py-5 px-md-5"> <div class="py-md-5"> <div class="heading-section heading-section-white ftco-animate mb-5"> <h2 class="mb-4">Any Enquiry?</h2> </div> {% component 'simpleContact' %} </div> </div> </div> </div> 和文件journals){ {1}},然后尝试再次运行mongo.lock...

答案 19 :(得分:0)

在Centos服务器中

这对我有用

chown -R mongod:mongod /var/lib/mongo

答案 20 :(得分:0)

如果您确实想要与原始问题中的命令等效的一行,则可以使用别名:

mongo --eval "db.getSiblingDB('admin').shutdownServer()"

https://stackoverflow.com/a/11777141/7160782

答案 21 :(得分:0)

在CentOS 6.x上对我来说:

sudo chown -R mongodb:mongodb <db-path> sudo service mongod restart

并且我在db-path中设置了自定义/etc/mongod.conf

答案 22 :(得分:0)

你可以通过这些方式尝试。 第一

  

sudo chown -R mongod:mongod / data / db

但有时候这没用。 第2位。 如果上述方法无用,您可以尝试这样做:

  

mkdir / data / db #as数据库存储路径

     

nohup mongod --dbpath / data / db&amp;

或输入:

  

mongod --dbpath / data / db

获取输出流

答案 23 :(得分:0)

我遇到了同样的问题。

我通过使用以下命令将selinux状态更改为permissive来解决它:

setenforce 0

答案 24 :(得分:0)

在Windows上,确保控制台以管理员身份启动

答案 25 :(得分:0)

执行ls -la以了解/ var / log / mongodb的用户和组。 然后做sudo chown -R user:group /data/db 现在运行sudo service mongodb start。 使用sudo service mongodb status

检查状态

答案 26 :(得分:-2)

每当你尝试启动mongod时 只需输入

sudo mongod

或者如果永久想要解决这个问题,只需尝试将rwx提交给/ data / db文件夹

 chmod +rwx data/

答案 27 :(得分:-2)

修正: sudo mongod

我遇到了同样的问题,运行 mongod 并修复了sudo权限。 来自Windows环境,我只使用mongod来启动守护进程,看起来我们需要超级用户权限才能访问/ data / db。

您还可以为非root用户授予对该路径的读写权限。检查以上答案以获得指南!