잠금 파일을 작성 / 열 수 없습니다. /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와 함께 (새 경로) chown와 chgrp일치합니다. (예: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/db에USERNAME
— 사이프

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.