192

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

我看到 mongo 在 /data 即 /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

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

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
4

28 回答 28

484

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

sudo chown -R mongodb:mongodb /data/db
于 2014-03-25T00:59:30.063 回答
122

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

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

Mongodb 路径/etc/mongodb.conf设置为/var/lib/mongodb(主要安装位置和工作)。当我更改为/data/db(EBS 卷)时,我收到“errno:13 Permission denied”。

  1. 首先我跑了sudo service mongodb stop
  2. 然后我曾经ls -la查看分配给/var/lib/mongodb(现有路径)的组和所有者 mongodb 并更改了/data/db(新路径)并与之chown匹配chgrp。(例如sudo chown -R mongodb:mongodb /data/db:)
  3. 然后我更新了路径etc/mongodb.conf/data/db删除了目录中的旧 mongo 文件/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

于 2013-04-12T22:43:31.057 回答
84

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

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

之后一切正常。

于 2013-06-28T14:42:04.990 回答
54

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

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

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

于 2015-09-17T12:59:23.733 回答
12

我按照本教程在带有 Ubuntu 14.04 的 EC2 上安装了带有 EBS 的 mongodb:

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

但我没有建议 chown :

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

解决问题

于 2014-11-28T12:03:27.267 回答
10

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

我跑了

killall mongod

其他一切都按预期运行。

killall命令将向具有真实 UID 的所有进程发送一个 TERM 信号。所以这会杀死所有正在运行的 mongod 实例,以便您可以启动自己的实例。

于 2017-06-21T03:19:01.343 回答
7

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

于 2016-07-20T20:07:15.297 回答
7

截至今天,我试图通过创建/打开锁定文件:/data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating并尝试了上面发布的所有答案解决了这个问题,因此没有通过添加

sudo chown -R mongodb:mongodb /data/db

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

sudo chown $USER /data/db

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

于 2017-02-13T02:06:48.510 回答
6

我遇到了类似的问题,并按照上面有关使用 sudo chown 等更改所有者的所有说明进行操作。更改后,我仍然有一个 mongodb 实例在后台运行。跑步

ps auxw | grep mongo 

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

于 2015-07-08T03:03:19.287 回答
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。我相信我的仍然因不当关闭而运行。

于 2014-09-04T13:45:14.637 回答
4

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

于 2015-08-13T12:18:45.650 回答
4

我的 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 我控制 [initandlisten] dbexit: rc: 100

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

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

修复了它,尽管我确实意识到这可能不太安全(在我的情况下,这是我自己的开发盒),在更改数据库和身份验证之后有点工作。

于 2016-09-28T10:46:51.047 回答
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

于 2016-01-07T19:23:05.130 回答
2

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

停止 mongodb 服务的命令(在 windows 中):net stop mongodb

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

于 2019-08-10T11:23:03.870 回答
1

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

顺便说一句,这是一个企业环境,不是 Amazon EC2 实例,但症状相似。

于 2013-07-19T13:08:51.387 回答
1

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

sudo rm /log/mongod.log

尽管错误消息专门针对锁定文件:

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating
于 2014-09-29T20:05:30.983 回答
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
于 2015-08-03T06:08:52.407 回答
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

于 2015-11-20T02:11:30.853 回答
1

我有同样的问题。

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

setenforce 0
于 2017-08-20T07:25:07.360 回答
0

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

于 2016-08-01T17:58:32.123 回答
0

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

于 2016-08-29T08:49:27.033 回答
0

你可以试试这些方法。第一个。

sudo chown -R mongod:mongod /data/db

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

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

nohup mongod --dbpath /data/db &

或输入:

mongod --dbpath /data/db

获取输出流

于 2017-12-27T04:00:20.483 回答
0

在 CentOS 6.x 上对我来说:

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

我已经db-path/etc/mongod.conf.

于 2018-09-05T15:56:08.900 回答
0

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

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

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

于 2019-03-27T07:22:31.933 回答
0

在 Centos 服务器中

这对我有用

chown -R mongod:mongod /var/lib/mongo
于 2019-07-30T05:24:25.857 回答
0

得到一个类似的错误,通过删除所有记录(在我的情况下是目录journals和文件mongo.lock...),然后检查端口sudo lsof -i:27017,如果 smth 在其上运行kill <PID of the process>,然后尝试./mongod再次运行

于 2019-11-29T09:09:52.033 回答
-2

使固定:sudo mongod

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

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

于 2018-05-30T10:07:40.213 回答
-2

每次尝试启动 mongod 时,只需键入

sudo mongod

或者如果要永久解决此问题,请尝试将 rwx 权限授予 /data/db 文件夹

 chmod +rwx data/
于 2018-05-31T06:46:03.993 回答