prosource

MongoDB: initAndListen 예외: 20 읽기 전용 디렉터리에 잠금 파일 생성 시도: /data/db, 종료

probook 2023. 3. 19. 18:19
반응형

MongoDB: initAndListen 예외: 20 읽기 전용 디렉터리에 잠금 파일 생성 시도: /data/db, 종료

가 창작했습니다./data/db와 runned root " " " 。./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는 root 사용자가 소유하고 쓰기 가능하지만 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

여기에 이미지 설명 입력먼저 모든 mongoDB 서비스를 중지하고 다음에 디렉토리를 만듭니다./root(루트가 없는 경우)을 의미하며 포트 파일도 삭제합니다.해당 디렉토리에 모든 권한을 부여하고 해당 디렉토리 소유자가 되어 다음 명령을 실행합니다.

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

메모: 이 모든 것이 나에게 효과가 있고, 당신에게도 효과가 있기를 바랍니다!

저도 같은 문제를 겪었고, 다음 방법으로 이 문제를 해결했습니다.당신은 다음 해결책을 시도해야 합니다.

- / / dbsudo mkdir - p / data / db
- ' / / dbsudo chown - R 'username' / data / db

의 권한을 수정합니다./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>

원천

좋은 해결책인데, 왜 아무도 창문에 대한 해결책을 제시하지 않는지 궁금하네요.

윈도우를 사용하는 경우 cmd를 "관리자로서 실행"하기만 하면 됩니다.

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 합니다. 디렉토리에는 MongoDB가 되어 있습니다.bin[ ] [ ★

sudo bin/mongod 

루트 사용자로 MongoDB를 실행하면 루트 비밀번호를 입력하도록 요구될 수 있습니다.그래도 MongoDB를 실행할 수 없다면 MongoDB의 데이터 디렉토리에 대한 권한을 확인하십시오.입력:

ls -ld /data

「」라고 입력합니다.ls -l / 및 에 대해서는, 「」를 한다./data디렉토리로 이동합니다.

모드는 "root"으로 해야 합니다.rwx"는 루트 사용자가 파일을 읽고, 쓰고, 실행할 수 있음을 의미합니다.이를 실현하기 위해 델은 다음을 사용합니다.

chmod 755 /data 

755 8 의 8 표기법입니다./data"를 "로 이동합니다.rwxr-xr-x즉, 루트 사용자는 읽기, 쓰기 및 실행이 가능한 반면 "group"과 "everyone"은 읽기 및 실행만 가능합니다.

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

sudo chmod 755 /data   

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

그런 다음 다음 다음 명령을 사용하여 권한 모드를 다시 가져옵니다.

ls -ld /data

다음과 같이 표시됩니다.

drwxr-xr-x  3 root  wheel  102 Mar  3 17:00 /data

d에는 "권한은 없다"가반영되어 rwxr-xr-x

이제 MongoDB 디렉토리로 돌아가서 다음을 입력할 수 있습니다.

sudo bin/mongod  

MongoDB를 실행합니다.

root에 를 둘 가 없는 「」를 작성할 수 .data/db홈디렉토리)에서mkdir -p ~/data/db를 참조해 주세요.

다음 를 MongoDB로 할 수 .--dbpath★★★★

mongod --dbpath=$HOME/data/db

(이것은 단말기에서 기동하는 것을 전제로 하고 있습니다).

꼭 실, 꼭, 꼭, 꼭, 꼭, 꼭, 꼭, in, 다,~/data/db원하는 장소에 구애받지 않고 여러 데이터베이스 경로를 사용하여 모든 것을 적절하게 구성할 수 있습니다.생산에는 최적인 옵션이 아닐 수 있지만(원하는 작업에 따라 다름), 작업을 적절하게 개발하기 위한 최선의 옵션입니다.

슈퍼 유저로서 다음의 커맨드를 실행할 필요가 있습니다.

터미널에서 sudo su mongod를 입력하기만 하면 됩니다.

Windows 에서 MongoDB를 셋업하려고 하는 경우, Enrique상기의 제안대로 Admistrator를 실행하는 방법이므로 cmd를 실행합니다.여기를 참조해 주십시오.

제 경우 데이터 디렉토리에 대해 사용자 지정 경로를 사용하고 있었는데 잘못된 권한 설정이 있었습니다.

으로 할당되었습니다.ubuntu:ubuntu를 사용해야 합니다.mongodbuser:group으로 지정합니다.

sudo chown -R mongodb:mongodb  /path/to/mongodb

Ubuntu LTS 20.04에서는 이것이 유효했습니다.

$ sudo service mongod start

SElinux가 활성화되어 있는지 확인합니다.강제 모드일 경우 허용 모드로 시도합니다.mongodb에 대한 SELINUX 정책을 생성하는 데 도움이 되는 경우.

audit2allow를 사용하여 시도할 수 있습니다.https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow 를 체크해 주세요.

mongo를 설치하는 대부분의 방법은 사용자 'mongodb'를 생성합니다.이 사용자가 있는 경우에는 모든 것이 동작하는 것처럼 보일 때까지 권한을 해킹하는 것이 아니라 이 사용자를 사용해야 합니다.

cat /etc/passwd | grep mongo

mongodb를 root으로 실행하려고 하는 것은 좋지 않습니다.일반 사용자로 실행하려고 하면 에러 메시지가 뜨는 것과 같은 상태가 됩니다.-u 옵션을 사용하여 프로그램을 다른 사용자로 실행할 수 있습니다.

sudo -u mongodb mongod --dbpath /what/ever/

또한 다양한 지침 및 튜토리얼에서는 mongod를 중지하고 몇 가지 사항을 변경한 후 다시 시작해야 합니다.mongod를 정지하는 방법에 따라서는 잠금파일이 tmp 단위로 느릴 수 있으므로 데몬을 재시작하기 전에 이 파일이 사라졌는지 확인하십시오.

sudo rm /tmp/mongodb-27017.sock

잘못된 이유:

./data/db ,

현재 이 폴더에는 읽기 전용 권한만 있습니다.

솔루션:

1.: 가 1.에 대한 및 권한을 합니다./data/db 표시

sudo chown -r your-user-name /data/db

2. 데이터베이스 경로를 다른 곳에 만들고 MongoDB 데이터베이스 경로를 변경합니다.다음은 예를 제시하겠습니다.

사실 데이터베이스 경로를 항상 볼 수 있는 곳에 두려고 했습니다.

나는 두 번째 방법을 직접 사용했다.

#먼저 데이터베이스 스토리지 디렉토리를 만듭니다.

★★★에 했습니다.~/Documents/mongodb/data

#앞으로 실행할 때 다음 명령을 입력하여 OK(확인)

mongod --dbpath ~/Documents/mongodb/data

또한 MongoDB에서 글로벌 변수를 설정할 때 다음과 같은 문제가 발생할 수 있습니다.

예를 들어 다음과 같습니다.

1. 단말기는 으로 1.입니다.bash 저는 , ㄴ, ㄴ, ㄴ, ㄴ, ㄴ을 사용합니다zsh

그렇다면 우리가 해야 할 일은 명확합니다.

으로 설정해야 .zsh.

zsh 우선 이 읽힙니다.먼저 컨피규레이션파일을 읽습니다.~/.zshrc ,

따라서 환경변수의 구성정보를 이 구성파일에 넣을 수 있습니다.

vi ~/.zshrc
Add export PATH=/usr/local/mongodb/bin:$PATH

의 기본 는 2. mongodb입니다./data/db ,

요.sudo mkdir -p /data/db

다음으로 서비스를 시작합니다(서버를 기동합니다).

mongod

[ Waiting for connection 27017 ](접속 대기 중) 프롬프트가 뜨면

데이터베이스 서비스가 실제로 시작되었습니다.

(중요하지 않은 경고도 있지만)

또는

클라이언트의 접속을 대기하고 있는 인터페이스를 표시하는 것은, 기동이 성공하고 있는 것을 의미합니다.

「」, 「」의 ./data/db더입니니다다

정상적으로 동작하지 않는 경우는, 삭제해 주세요.

" " " 라고 입력합니다.localhost:27017 ★★★★★★★★★★★★★★★★★」127.0.0.1:27017 ,

이런 행이 Word로 나타납니다.

It looks like you are trying to access MongoDB over HTTP on the native driver port.

3. MongoDB 명령어 조작을 시작합니다.

명령줄을 다시 열고

mongo

데이터베이스를 조작할 수 있게 되어 데이터베이스 관련 조작을 실행할 수 있게 되었습니다.

show dbs

MongoDB를 정지하려면 올바르게 종료해야 합니다.

그렇지 않으면 다음 번에 데이터베이스에 연결하는 데 문제가 발생합니다.

이 작업을 완료하려면 다음 두 줄의 코드를 사용하십시오.

use admin;
db.shutdownServer();

4. 마지막으로

시각화 도구 로보몽고

다운로드에 적합한 버전을 선택할 수 있습니다.

다른이들,

Mac 사용자라면 MongoDB의 TGZ 압축 파일을 다운로드 할 것입니다.

을 "decompressed", "decompressed 파일은 "decompressed" 입니다./usr/local ,

수 ./usr.스킬해 ), 이 디렉토리(스킬 해 주세요).★★★★★★★★★★★★★★★★★」

는 URL 을 할 수 있습니다.Shift + Command + G ★★/usr/local.

게다가 MongoDB에 접속할 수 없는 경우는 어떻게 해야 합니까?

지난번 비정상 셧다운으로 인해 잠금파일이 생성되었으니 잠금파일을 삭제하기만 하면 됩니다.

sudo rm /data/db/mongod.lock

" " " " 의 되면 ?sudo mongod령어어 츠요시

사실 막힌 게 아니라 시작한 거예요.

이 창을 닫을 수 없습니다.

창을 '어느 때 보다'를 할 수 .sudo mongo명령어를 입력합니다.

이 문제를 회피하는 방법 »

주의: MongoDB를 정지하려면 올바르게 종료해야 합니다.

그렇지 않으면 다음 번에 데이터베이스에 연결하는 데 문제가 발생합니다.

이 작업을 완료하려면 다음 두 줄의 코드를 사용하십시오.다시 한 번:

use admin;
db.shutdownServer();

MongoDB를 다운로드하지 않고 mac을 사용하는 경우 터미널을 열고 명령어를 사용하여 dir:cd /usr/local명령어를 사용하여 다음 명령을 다운로드합니다.

sudo curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.X.X.tgz

알림: 4.X.X, MongoDB 버전

또한 macOS용 stuiod3t-2019030.dmg를 다운로드하면

그것을 깨다:

  1. dmg 파일을 설치합니다.

  2. 설치 후 파일을 엽니다.

  3. 해, 한 「Draging」()를 합니다.data-man-mongodb-ent-2019.3.0.jar

  4. 최종 실행

    sudo spctl --master-disable Finished~를 지정합니다.

(httpiod3t-2019030.dmg for macOS 크래킹:https://blog.csdn.net/m0_49337600/article/details/111415870)

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

반응형