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

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

我看到mongo在/ data ie / data / db中创build了一个“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 

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

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

/etc/mongodb.conf中的Mongodbpath被设置为/var/lib/mongodb (主要安装位置和工作)。 当我改为/data/db (EBS卷)时,我得到了'errno:13权限被拒绝'。

  1. 首先我跑了sudo service mongodb stop
  2. 然后我使用ls -la来查看分配给/var/lib/mongodb (现有path)的组和所有者mongodb,并且使用chownchgrp来更改/data/db (新path)以匹配。 (例如: sudo chown -R mongodb:mongodb /data/db
  3. 然后我将etc/mongodb.conf的path更新到/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并检查一分钟后。

我刚刚花了一个多小时。 更改组和删除旧文件可能是没有必要的,但这是对我的工作。

这是一个关于将ebs卷挂载到ec2实例的好video:

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

我用这个方法来解决这个问题:

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

在我的情况下(AWS EC2实例,Ubuntu)帮助:

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

之后,一切正常。

你只需要访问你的/data/db文件夹。

键入sudo chown -R <USERNAME> /data/db ,用您的用户名replace<USERNAME>

你可以通过inputwhoamifind你的用户名。

在本教程之后,我在安装了Ubuntu 14.04的EC2上安装了EBS的mongodb:

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

但是,而不是我所build议的chown:

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

解决这个问题

对于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

截至今天,我试图通过创build/打开locking文件:/data/db/mongod.lock errno:13权限被拒绝是一个mongod实例已经运行?,终止 ,并尝试所有答案上面张贴到解决这个问题,因此没有任何加法

sudo chown -R mongodb:mongodb / data / db

除非我通过添加我的当前用户权限的位置path

sudo chown $ USER / data / db

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

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

 ps auxw | grep mongo 

向我展示了使用mongo在后台运行时没有正确closures的其他任务。 然后我跑了所有的运行,然后可以启动我的服务器。

删除mongodb.lock文件在我的情况下不是问题。 我这样做,并得到有关端口正在使用的错误:[initandlisten] listen():bind()失败errno:98地址已经在使用套接字:0.0.0.0:27017。 我在这里find了另一个解决scheme: 无法启动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 (用步骤1中find的进程IDreplace1412)

而且我能够再次成功启动mongodb。 我相信我的行踪还在不正确的closures。

在Mycase中
在mongodb 2.6.11版本中默认的databse目录是/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

在Mongo 2.2.4实例的Fedora 18上,我通过以root身份调用setenforce 0来禁用SELinux,从而避免了类似的错误。

顺便说一句,这是一个企业环境,而不是亚马逊EC2的实例,但症状是相似的。

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

 sudo rm /log/mongod.log 

尽pipe错误消息专指文件:

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

我杀了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 

对于那些在Windows上使用任务pipe理器遇到这个错误结束正在运行的“mongod.exe”的实例。 一旦完成,永久删除mongo.lock文件并运行mongod.exe。 那应该是完美的。

这是我解决这个问题的方法:

$ 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

我的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 
  • 重新启动服务器

修正了它,虽然我意识到可能不是太安全(这是我自己的开发盒,我在我的情况),稍微跟随数据库和身份validation工作的变化。

ls -la知道/ var / log / mongodb的用户和组。 然后做sudo chown -R user:group /data/db现在运行sudo service mongodb start 。 用sudo service mongodb status检查sudo service mongodb status

在窗口上确保控制台启动为aministrator

我有类似的问题,实际的原因是有mongod会话已经从我以前的尝试运行。

我跑了

 killall mongod 

其他一切都按预期运行。

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

毕竟, 重新启动电脑是我的伎俩。

我有同样的问题。

我通过下面的命令将selinux状态更改为许可来解决它:

 setenforce 0