잠금 파일을 작성 / 열 수 없습니다. /data/mongod.lock errno : 13 권한이 거부되었습니다.


187

EC2에서 mongo가 마운트 된 드라이브를 사용하도록하려면 어떻게해야합니까? 나는 정말로 이해하지 못한다. ec2에 볼륨을 연결하여 드라이브를 루트로 포맷하고 루트로 시작했지만 루트로 액세스 할 수 없습니까? 우분투 12.04에서 실행 중입니다. 다른 몽고가 실행되고 있지 않습니다

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

1
mongod가 마지막으로 실행했을 때 제대로 종료되지 않아서 mongod.lock 파일을 정리할 수없는 것 같습니다. 이 파일은 여러 mongod 인스턴스가 파일에서 작업하지 못하게하기 위해 존재합니다. 파일을 삭제하고 mongod를 다시 실행해도 문제가 없습니다.
ACE

2
업데이트 된 질문을 참조하십시오. 잠금 파일을 제거하는 경우 동일한 문제
Tampa

여전히 잠금 파일에 문제가있는 것 같습니다. 잠금 파일이있는 디렉토리에 대한 권한은 무엇입니까? TBH 나는 2 가지 경우에만 이것을 보았습니다 : 1) 잠금 파일이 이미 존재하고 2) mongod는 원하는 위치에 잠금 파일을 만들 수있는 권한이 없습니다.
ACE

1
mongo 사용자가 chown mongodb:mongodb on /var/lib/monogdbdata 디렉토리에도 액세스 할 수 있는지 확인해야합니다 .
Hans N. Hjort 2014 년

답변:


117

우분투 EC2 인스턴스에서 동일한 문제가 발생했습니다. 7 페이지의이 아마존 기사를 따르고있었습니다.

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

Mongodb 경로 /etc/mongodb.conf/var/lib/mongodb(1 차 설치 위치 및 작동) 로 설정되었습니다 . /data/db(EBS 볼륨)으로 변경하면 'errno : 13 Permission denied'가 발생했습니다.

  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 1 분 정도 기다렸다. 27017에 즉시 연결하려고하면 사용할 수 없습니다.
  5. 1 분 후 /data/db(EBS 볼륨) 몽고는 저널, mongod.lock, local.ns, local.0 등을 배치해야합니다 sudo service mongodb restart. 1 분 후에 시도하지 않으면 확인하십시오.

나는 이것으로 한 시간 이상을 보냈습니다. 그룹을 변경하고 이전 파일을 삭제하는 것이 필요하지는 않지만 저에게 효과적입니다.

이것은 ebs 볼륨을 ec2 인스턴스에 마운트하는 것에 대한 훌륭한 비디오입니다.

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


8
이 문제로 어려움을 겪고 있고 ls -lahZ로 대상 폴더를 나열하면 보안 컨텍스트가 제공되고 mongo 데이터 폴더의 컨텍스트는 "sudo chcon -R -u system_u -t mongod_var_lib_t / folder / data "명백한 권한 및 사용자 : 그룹 조합 외에. 도움이 되길 바랍니다.
jmdiego

478

이 방법을 사용하여 문제를 해결합니다.

sudo chown -R mongodb:mongodb /data/db

8
-R옵션을 추가하면 완벽합니다 :)
Adrien

7
즉 : 시작 id -u되지 않은 sudo chown -R / data / db입니다. :)
rncrtr

8
백틱에 문제가 있음이 밝혀졌습니다. sudo chown $USER /data/db원래 명령 대신 실행 해보십시오 .
Paymahn Moghadasian

7
이것은 실제로 정답입니다. @Tampa이 답변을 수락해야합니다. btw- id -U또는 $USER물건이 필요하지 않습니다 . mongo에는 자체 사용자 / 그룹이 있습니다. mongodb : mongodb를 하드 코딩 할 수 있고 하드 코딩해야합니다. 그래서 명령은 단순히sudo chown -R mognodb:mognodb /data/db
남자 mograbi

11
이것이 실제로 무엇을합니까? 그것은 작동하지만 이해하고
싶습니다

81

필자의 경우 (AWS EC2 인스턴스, Ubuntu)가 도움이되었습니다.

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

그 후 모든 것이 잘 작동했습니다.


6
이것은 최고의 답변입니다.
mongod를

2
예, 이것은 최선의 대답은
채식 Sv의

1
우리의 소유권을 transfering / 변화 /data/dbUSERNAME
사이프

52

당신은 당신에게 액세스 권한을 부여해야합니다 /data/db폴더에 됩니다.

입력 sudo chown -R <USERNAME> /data/db, 교체<USERNAME> 사용자 이름으로.

을 입력하여 사용자 이름을 찾을 수 있습니다 whoami.


12

이 튜토리얼에 따라 Ubuntu 14.04가 설치된 EC2에 mongodb를 EBS와 함께 설치했습니다.

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

그러나 제안 된 chown 대신에 나는 :

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

문제를 해결하려면


2
그렇습니다. 소유자는 "루트"가 아닌 "mongodb"여야합니다.
Imskull

10

비슷한 문제가 있었는데 실제 이유는 이전 시도에서 이미 mongod 세션이 실행 되었기 때문입니다.

나는 달렸다

killall mongod

그리고 다른 모든 것은 예상대로 실행되었습니다.

killall명령은 실제 ​​UID를 사용하여 모든 프로세스에 TERM 신호를 보냅니다. 따라서 이것은 실행중인 mongod의 모든 인스턴스를 죽여서 스스로 시작할 수 있습니다.


이것은 문자 그대로 가장 짧은 대답이며 셀 수없이 많은 시간 후에 내 문제를 해결 한 유일한 대답입니다 ... 감사합니다!
moomoochen

도움이되어 다행입니다! :) 사람들이이 답변을 더 쉽게 찾을 수 있도록 도와주는 방법이 있기를 바랍니다.
Venky Soorisetty

7

오늘로서, 나는 통해 자신의 길을 가려고 13 권한이 mongod 인스턴스가 이미 종료? 실행되어 거부 : /data/db/mongod.lock의 errno는 : 만들 수있는 개방 / 잠금 파일 , 모든 대답에 이상 게시 시도 이 문제를 해결하십시오. 따라서 아무것도 해결하지 못했습니다.

sudo chown -R mongodb : mongodb / data / db

현재 사용자 권한을 위치 경로에 추가하지 않는 한

sudo chown $ USER / data / db

이것이 누군가를 돕기를 바랍니다. 또한 방금 Pi에 Mongo DB를 설치했습니다. 건배!


이것이 문제의 실제 해결책입니다
Sahil Nagpal

6

비슷한 문제가 있었고 sudo chown 등을 사용하여 소유자를 변경하는 것과 관련된 위의 모든 지침을 따랐습니다. 변경 후에도 백그라운드에서 mongodb 인스턴스가 계속 실행되었습니다. 달리는

ps auxw | grep mongo 

백그라운드에서 제대로 실행되지 않은 몽고를 사용하는 다른 작업을 보여주었습니다. 그런 다음 실행중인 모든 서버에서 kill을 실행 한 다음 서버를 시작할 수 있습니다.


6

Mac 사용자의 경우 : ls -ld / data / db /를
실행하십시오 . 출력은 drwrx-xr-x같습니다. 20 singh wheel 680 21 Jul 05:49 / data / db / 여기서 singh 는 소유자이고 wheel 은 속한 그룹입니다. . 실행 휠 / 데이터 / DB : sudo는 대한 Chown -R 싱 실행 mongod를




5

내 경우 mongodb.lock 파일을 제거하는 것이 문제가되지 않았습니다. 나는 그렇게하고 포트 사용에 대한 오류가 발생했습니다 : [initandlisten] listen () : bind () 실패 errno : 98 주소 소켓에 대해 이미 사용중인 주소 : 0.0.0.0:27017. 다른 해결책을 찾았습니다 : 프로세스를 종료하는 지침으로 mongodb 로컬 서버를 시작할 수 없습니다 .

  1. mongodb 포트를 실행중인 프로세스를 netstat에서 찾으십시오 (27017).

    sudo netstat -tulpn | grep :27017

    출력은 다음과 같습니다. tcp 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412 / mongod

  2. 적절한 프로세스를 종료하십시오.

    sudo kill 1412 (1412를 1 단계에서 찾은 프로세스 ID로 바꾸십시오)

그리고 나는 mongodb를 성공적으로 다시 시작할 수있었습니다. 나는 내 잘못이 여전히 셧다운에서 빠져 나갔다고 생각한다.


4

작업 관리자를 사용하여 Windows에서이 오류가 발생하는 경우 실행중인 "mongod.exe"인스턴스를 종료하십시오. 완료되면 mongo.lock 파일을 영구적으로 삭제하고 mongod.exe를 실행하십시오. 그 후에 완벽하게 작동해야합니다.


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 I 제어 [초기화] dbexit : rc : 100

따라서 문제는 / var / lib / mongodb 폴더에 대한 권한에있었습니다.

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • 서버를 다시 시작하십시오

너무 안전하지 않을 수도 있음을 알았지 만 (내 경우에는 필자 자신의 dev 상자입니다) db와 인증 모두 변경 사항을 따르는 것이 효과적이었습니다.


2

Mycase
In 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


`id -u` 여야 함
marcus

2

Windows10에 mongod 명령을 설치 한 후 동일한 문제가 발생했습니다. mongodb 서비스를 중지하고 다시 시작했습니다. 매력처럼 일하기

mongodb 서비스를 중지하는 명령 (Windows) : net stop mongodb

mongodb 서버를 시작하는 명령 : mongod --dbpath PATH_TO_DATA_FOLDER


1

Mongo 2.2.4 인스턴스가있는 Fedora 18에서 SELinux를 호출하여 비슷한 오류를 해결할 수있었습니다. setenforce 0 root .

BTW, 이것은 Amazon EC2 인스턴스가 아닌 회사 환경이지만 증상은 비슷했습니다.


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

이것은 올바른 방향으로 나를 가리 켰습니다. 내 서버에서 sudo rm /var/log/mongodb/mongodb.log 및 sudo rm /tmp/mongodb-27017.sock을 수행해야했습니다.
Keith John Hutchison

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

1

이것이 내가 문제를 해결하기 위해 한 것입니다.

$ sudo mkdir -p / data / db

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

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

그리고 몽고를 시작하려면 ...

$ mongod


1

나는 같은 문제가 있었다.

아래 명령으로 selinux 상태를 허용으로 변경하여 해결했습니다.

setenforce 0

0

수행 ls -la은 / var / 로그 / MongoDB를의 사용자 및 그룹을 알고. 그런 다음 sudo chown -R user:group /data/db 지금 실행하십시오 sudo service mongodb start. 로 상태 확인sudo service mongodb status



0

이러한 방법으로 시도 할 수 있습니다. 1 일

sudo chown -R mongod : mongod / data / db

그러나 때로는 유용하지 않습니다. 2 일. 위의 방법으로 유용하지 않으면 다음과 같이하십시오.

데이터베이스 스토리지 경로로 mkdir / data / db #

nohup mongod --dbpath / data / db &

또는 유형 :

mongod --dbpath / data / db

출력 스트림을 얻기 위해


이것은 오래된 질문이며 귀하의 답변에 아직 존재하지 않는 내용이 추가되지 않는다면 가치가 있는지 스스로에게 물어보십시오.
Nic3500

0

CentOS 6.x의 경우 :

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

그리고에 사용자 정의 db-path를 설정 했습니다 /etc/mongod.conf.




0

smth가 실행중인 경우 포트를 확인 한 후 모든 레코드 (내 경우에는 디렉토리 journals및 파일에서 mongo.lock...) 를 제거하여 비슷한 오류가 발생 하여 다시 실행 하십시오.sudo lsof -i:27017kill <PID of the process>./mongod


-2

고치다: sudo mongod

sudo 권한으로 mongod 를 실행하면 동일한 문제가 해결 되었습니다. Windows 환경에서 왔습니다.mongod 에서 데몬을 시작하는 했습니다. / data / db에 액세스하려면 수퍼 유저 권한이 필요한 것 같습니다.

루트가 아닌 사용자에게 해당 경로에 대한 읽기 및 쓰기 권한을 부여 할 수도 있습니다. 위의 답변을 확인하십시오!


mongod를 루트로 실행하는 것은 필요하지 않으며 시스템을 악용에 더 취약하게 만들 수 있습니다.
qbert220

-2

mongod를 시작할 때마다 다음을 입력하십시오.

sudo mongod

또는 영구적 으로이 문제를 해결하려면 / data / db 폴더에 rwx 우선 순위를 부여하십시오.

 chmod +rwx data/

이것들 중 어느 것도 좋은 생각이 아닙니다. 첫 번째는 시스템을 보안 공격에 더 취약하게 만들 수 있습니다. 두 번째는 권한이없는 사용자가 몽고의 데이터베이스를 변조 할 수있는
qbert220
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.