IT박스

MongoDB : initAndListen 예외 : 20 읽기 전용 디렉토리에 잠금 파일을 작성하려고 시도했습니다 : / data / db, 종료

itboxs 2020. 7. 16. 19:47
반응형

MongoDB : initAndListen 예외 : 20 읽기 전용 디렉토리에 잠금 파일을 작성하려고 시도했습니다 : / data / db, 종료


나는 /data/db루트 디렉토리에서 만들고 실행했다 ./mongod:

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100

문제는 생성 한 디렉토리 /data/db가 소유하고 루트 사용자 만 쓸 수 있지만 mongod를 자신으로 실행한다는 것입니다. 이를 해결하는 방법에는 여러 가지가 있지만 궁극적으로 문제의 디렉토리에 올바른 권한을 부여해야합니다. 이것이 프로덕션 용인 경우 문서를 확인하고 신중하게 생각하는 것이 좋습니다. 아마도 특별한주의를 기울이고 싶을 것입니다.

그러나 이것이 테스트를위한 것이며 작업하고이를 수행하기 위해 필요한 경우,이 방법을 시도하면 모든 사람이 디렉토리를 쓸 수있게됩니다.

> sudo chmod -R go+w /data/db

또는 이것으로 디렉토리를 소유하게됩니다.

> sudo chown -R $USER /data/db

Mac에서는 다음을 수행해야했습니다.

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

그 안에 /tmp몽고도 접근해야하는 파일이 있었기 때문에


몽고를 루트로 사용할 수 있습니다.

$ sudo mongod

시스템이 SELinux를 사용하는 경우, 작성한 디렉토리에 올바른 컨텍스트를 사용해야합니다.

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

다음을 사용하여 컨텍스트를 복제하십시오.

chcon -R --reference=/var/lib/mongo /data/db

나는 같은 문제를 겪었고 다음 해결책 으로이 문제를 해결했습니다. 다음 해결책을 시도해야합니다.

sudo mkdir -p / data / db
sudo chown -R '사용자 이름'/ data / db


mongodb 로그를 확인하고 이러한 오류가 발생하면 내가 한 단계를 따르십시오. /data/db디렉토리의 권한 문제로 인해 발생합니다 . ubuntu16.04를 사용하고 있으며 다음과 같이 두 가지 간단한 명령을 실행하는 솔루션을 찾습니다.

1 단계 : / data / db 디렉토리에 권한을 부여하십시오.

sudo chmod -R 0777 /data/db

2 단계 : 다음 과 같이 mongod 서비스를 시작하십시오.

sudo service mongod start

3 단계 : mongod 서비스 상태 확인 :

sudo service mongod status

나는 똑같은 문제에 직면했고 그것을 해결했으며 단계별 설명이 있습니다.

다른 모든 것을 시도하기 전에 mongodb의 bin 디렉토리가 포함 된 mongodb 디렉토리로 변경하고 터미널에서 간단히 명령을 사용하십시오.

sudo bin / mongod

mongodb를 루트 사용자로 실행하면 루트 사용자로 비밀번호를 입력하라는 메시지가 표시 될 수 있습니다. 여전히 mongodb를 실행할 수 없으면 다음을 수행하십시오.

먼저 터미널에 다음을 입력하여 mongodb 데이터 디렉토리의 권한 모드를 봅시다 :

ls -ld / data

(ps 또는 "ls -l /"을 입력하여 / data 디렉토리를 포함하여 루트 디렉토리에있는 모든 디렉토리 및 파일의 권한 모드를 볼 수 있습니다.)

그리고 루트 사용자의 권한 모드는 "rwx"여야합니다. 즉 루트 사용자는 파일을 읽고 쓰고 실행할 수 있습니다. 이를 위해 터미널에 다음을 입력하여 권한 모드를 변경하는 명령을 사용합니다.

chmod 755 / data

(즉, 755는 권한 설정 인수의 특정 8 진 표기법입니다.) 이는 / data 디렉토리의 권한 모드를 "rwxr-xr-x"로 설정합니다. 즉, 루트 사용자는 그룹 사용자와 모든 사용자를 읽고, 쓰고, 실행할 수 있습니다. 그렇지 않으면 읽고 실행할 수만 있습니다.

참고 :이 작업을 수행 할 수없는 경우 대신 다음을 입력하십시오.

sudo chmod 755 / data

권한을 루트 사용자로 설정합니다.

그런 다음이 단계가 완료되면 다시 입력하여 권한 모드를 다시 캡처하십시오. ls -ld / data

출력은 다음과 같아야합니다.

drwxr-xr-x 3 루트 휠 102 3 월 3 일 17:00 / data

(p.s.you don't need to worry about the "d" at the beginning) and notice the "rwxr-xr-x" setting is now done.

Then we are all set and you can now change back to the mongodb directory and type:

sudo bin/mongod

to run the mongodb.

Hope this helps.


Nice solutions, but I wonder why nobody is giving the solution for windows.

If you are using windows you just have to "Run as Administrator" the cmd.


you just need to run the command as a super user:

just type from the terminal: sudo su mongod

참고URL : https://stackoverflow.com/questions/42446931/mongodb-exception-in-initandlisten-20-attempted-to-create-a-lock-file-on-a-rea

반응형