[mongodb] 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몽고도 접근해야하는 파일이 있었기 때문에


답변

시스템이 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 서비스를 중지 한 다음에 디렉토리를 작성하십시오. 디렉토리 /가 없으면 루트를 의미하고 포트 파일도 제거하십시오. 해당 디렉토리에 대한 모든 권한을 부여하고 해당 디렉토리 소유자가되어 아래 명령을 실행하십시오.

sudo service mongod stop
sudo rm -rf /tmp/mongod*
sudo mkdir -p /data/db
sudo chmod -R a+wxr /data
sudo chown -R $USER:$USER /data

이제 MongoDB 서비스를 시작하면 도움이되지 않으면 다음과 같이 포트를 변경하십시오.

sudo service mongod restart && mongod # if didn't help run below cmd
mongod --port 27018

참고 : 이 모든 것이 작동하고 희망이 당신을 위해 작동 할 것입니다.


답변

/data/db(또는 /var/lib/mongodb) 의 권한을 수정하십시오 .

sudo chown -R mongodb: /data/db

그런 다음 MongoDB를 다시 시작하십시오.

sudo systemctl restart mongod

도움이되지 않으면 / var / lib / mongodb와 다른 데이터 디렉토리를 사용하는 경우 오류 메시지를 확인하십시오. 이 경우에는

sudo chown -R mongodb: <insert your data directory here>

출처


답변

좋은 해결책이지만 왜 아무도 Windows 용 솔루션을 제공하지 않는지 궁금합니다.

창을 사용하는 경우 cmd를 “관리자 권한으로 실행”하면됩니다.