source

mongodb 3.4.3 Ubuntu 16에서 wired tiger_kv_engine.cpp 267 오류가 거부되었습니다.

manycodes 2023. 7. 10. 22:32
반응형

mongodb 3.4.3 Ubuntu 16에서 wired tiger_kv_engine.cpp 267 오류가 거부되었습니다.

mongod를 서비스로 시작하는 데 문제가 있습니다.sudo mongod -f /etc/mongod.conf를 실행할 때 작동이 가능하지만 sudo service mongod start로 시작할 때 로그에 오류가 표시됩니다.

Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

나는 우분투 16에서 mongodb를 실행하고 있습니다.

저는 그 버전의 설치를 위해 mongodb 설명서의 지침을 정확히 지켰는데, 이것이 버그인가요?이 문제를 해결하는 방법을 제안해 주시면 감사하겠습니다.

추가 정보:

mongodb 서비스 시작 스크립트는 다음과 같이 나타나며 사용자 mongodb로 실행됩니다. 이 스크립트가 lib/systemd/system/mongodb.service:

[Unit]
Description=MongoDB Database Service
Wants=network.target
After=network.target

[Service]
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=mongodb
Group=mongodb
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

mongod를 서비스로 시작하는 데 문제가 있습니다.sudo mongod -f /etc/mongod.conf를 실행할 때 작동이 가능하지만 sudo service mongod start로 시작할 때 로그에 오류가 표시됩니다.

sudo 시작 령작mongod와 함께root권한(슈퍼 사용자 액세스라고도 함).실행하는 경우mongodservice definition)에서됩니다.mongodb두 가지 모두에 대해).

실할필없다를 .mongod합니다.root사용자, 그리고 이것은 최소 권한의 원칙의 일반적인 보안 관행에 따라 강하게 권장되지 않습니다.

하려면 명줄에구테려다면사수있다용습니를 사용할 수 .sudo기본(루트) 사용자 대신 지정된 사용자와 함께 실행합니다.

예:

sudo -u mongodb mongod -f /etc/mongod.conf 

일반적으로 실행보다는 서비스 구성을 사용하는 것이 가장 좋습니다.mongod경로가 경로와 매개 .수동 호출의 경우 기본 구성 경로가 없으므로 구성 파일 경로와 같은 매개 변수도 포함해야 합니다.파일이 , 구성파없면으이,mongod 은 " 은▁as다"와 같은 합니다.dbPath/data/db.

Assertion: 28595:13: 권한 거부 src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

할 수 에 시작한 권한 오류입니다.mongod▁the로서root은 이제 사용자가 할 수 사용자가 소유할 수 있습니다.mongodb사용자가 액세스할 수 없습니다.의 특정 오류는 된 파일)에 .storage.dbPathmongod.conf).

사용자의 기본 경로를 변경하지 않았다고 할 때 합니다.mongod.conf파일, 당신은 무엇과 일치하도록 재귀적으로 권한을 조정할 수 있어야 합니다.mongod.service정의가 기대합니다.

먼저, 작업을 중지했는지 확인합니다.mongod인스턴스(현재 실행 중인 경우).

그런 다음 필요한 사용자 및 그룹에 대한 사용 권한을 재귀적으로 조정합니다.

# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb

# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb

은 이시할수다있니를 시작할 수 .mongod할 수 없는 에는 서비스를 시작할 수 없는 경우에는 서비스 자세한 합니다.mongodfile (로 표시)mongodb서비스 사용자).

같은 문제를 가지고 있습니다.

/var/log/mongodb/mongod에 있었던 내용.로그:

2017-05-13T13:46:41.152+0700 E STORAGE  [initandlisten] WiredTiger error (13) [1494658001:152518][15821:0x7fb843803cc0], connection: /var/lib/mongodb/journal/WiredTigerPreplog.0000000002: file-remove: unlink: Permission denied
2017-05-13T13:46:41.159+0700 I -        [initandlisten] Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

따라서 "Wired Tiger Preplog" 파일을 제거할 수 없습니다./var/lib/mongodb/journal의 0000000002"에서 ID는 방금 권한을 부여했고, 저는 그냥 했습니다.

sudo chmod 764 /var/lib/mongodb/journal/

도움말이 없으면 다음을 시도합니다.

sudo chown -R mongodb:mongodb /var/lib/mongodb/ && sudo chmod 764 /var/lib/mongodb/journal/

이러한 문제를 트리거하는 세 가지 설정이 있습니다.

  1. MongoDB 설치는 지정된 경로에 데이터베이스 파일을 생성하도록 구성되어 있으며 이 경로는 현재 시스템에 없습니다.mongo에서 이 경로를 dbpath라고 합니다.

당신의 경우, 다음 사항을 확인합니다./data/db존재합니다. 존재하지 않거나 비어 있으면 mongod가 잘못된 dbpath를 시도하고 있습니다.당신은 그것을 찾아야 합니다, 보통 그것은 아래에 있습니다./var/lib/mongodb.

일단 발견하면 두 가지 방법이 있습니다.을 먼저모파복사다니합으로 합니다./data/db번째로 파일 mongoddbpath 파일로 dbpath 파일은 dbpath 파일은 dbpath 파일은 dbpath 파일은 mongod.conf 파일은 linux 파일입니다./etc/mongod.conf는 mongod로 .--config구성 파일을 지정합니다.

  1. MongoDB에 해당 dbpath에 해당하는 하나 이상의 파일 또는 디렉터리를 읽을 수 있는 권한이 없습니다.

chown mongodb:mongodb dbpath -R.

  1. MongoDB에 WiredTiger.wt가 없습니다.이 문제는 dbpath 아래에서 파일을 제거하거나 장치 오류가 발생한 경우 발생할 수 있습니다.예를 들어 복구 전략을 테스트하기 위해 이 작업을 수행합니다.

dbpath가 올바르고 WiredTiger.wt 인스턴스가 없는 경우데이터베이스가 손상되었습니다.이 파일을 분실한 경우 무결성을 보장할 방법이 없습니다.mongodb 재설치 기준:

sudo apt-get purge mongodb-org*

sudo rm -r dbpath

sudo apt-get install mongodb-org

편집 : 복제본 중 하나에서 dbpath를 복사합니다.

저도 몽고에 같은 문제가 있었습니다.로그:

2021-09-16T16:06:43.782+0200 F  STORAGE  [initandlisten] Reason: 13: Permission       denied
2021-09-16T16:06:43.782+0200 F  -        [initandlisten] Fatal Assertion 28595     at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 789

그래서 dbPath 폴더(mongodb config file /etc/mongod.conf, section storage:dbPath에 지정됨)를 찾아보니 동일한 파일이 root에서 소유하고 있었습니다.

 WiredTiger.turtle
 WiredTigerLAS.wt 
 journal/WiredTigerLog.0000000112

dbPath 폴더에서 아래 명령을 사용하여 소유자 및 그룹을 mongodb로 변경합니다.

sudo chown mongodb:mongodb WiredTiger.turtle WiredTigerLAS.wt journal/WiredTigerLog.0000000112

이 후 mongodb 서버를 "service mongod start"로 시작하고 출력을 통해 "service mongod status"로 상태를 확인할 수 있습니다.

mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-09-16 16:19:47 CEST; 54min ago
Docs: https://docs.mongodb.org/manual
Main PID: 8459 (mongod)
   CGroup: /system.slice/mongod.service
           └─8459 /usr/bin/mongod --config /etc/mongod.conf
Sep 16 16:19:47 svi5-ubu16 systemd[1]: Started MongoDB Database Server.

위의 명령은 루트가 아닌 일반 사용자로 작동합니다.

내 구성: Ubuntu 16.04.2 LTS, MongoDB 쉘 버전 v4.2.1.

mongodb(사용자 및 그룹)가 소유한 기타 파일 또는 폴더:

/var/log/mongodb
/var/lib/mongodb 
/tmp/mongodb-27028.sock

저는 이 문제를 해결하는 데 많은 시간을 할애했습니다. 여기에 게시된 모든 사용자와 일치하여 해결 방법을 안내해 주셔서 감사합니다.

이전 답변에 코멘트를 추가하고 싶지만, 유감스럽게도 아직 할 수 없습니다.

저는 스테니의 설명에 전적으로 동의합니다.그것이 바로 나에게 일어난 일입니다.저는 항상 mongod를 서비스로 실행해 왔지만, 오늘은 제가 몇 가지 변경을 가했기 때문에 다음을 사용하여 프로세스를 실행하려고 했습니다.sudo mongod --auth --dbpath /data/mongodb/인증 및 DB 변경 위치를 테스트합니다.그 후 mongod 서비스는 이 권한 문제로 인해 더 이상 실행되지 않았습니다.

명령을 내리는 것이sudo chown -R mongodb:mongodb /data/mongodb/예상했던 대로 즉시 문제를 해결하지 못했습니다.몇 번이나 재부팅을 해야 했습니다. 제거했습니다.mongod.lock철다하 아래에 파일을 합니다./data/mongodb/을 재발행합니다.sudo chown 것이.그리고 마침내 모든 것이 잘 되었습니다.

저도 비슷한 문제가 있지만 커스텀 로그 경로와 data dir에 대한 문제가 있습니다.이들에 대한 소유자 및 그룹 액세스를 업데이트해도 서비스로 실행되는 문제가 해결되지 않았습니다. 그룹 및 소유자를 mongodb로 업데이트합니다. mongodb는 앞서 언급한 것처럼 mongod를 실행하는 데 자체적으로 작업합니다.

sudo -u mongodb mongod -f /etc/mongod.conf 

또는

sudo mongod -f /etc/mongod.conf

CentOS에서 동일한 문제가 발생하지만 권한이 올바른 것처럼 보이는 경우 SELinux 정책 때문일 수 있습니다.내 시스템에서 MongoDB 파일은 특정 SELinux 컨텍스트를 사용합니다.내가 SELinux 컨텍스트를 수정할 때까지 mongod 서버를 시작하지 못하고 동일한 권한 오류를 출력했습니다.

MongoDB 데이터 폴더가 없는 경우 다음을 생성합니다(/var/lib/mongo 또는 /var/lib/mongodb, /etc/mongod.conf 파일 확인).

$ mkdir -p /var/lib/mongodb

그런 다음 SELinux 컨텍스트를 복원해 보십시오.

$ restorecon -v /var/lib/mongodb
$ restorecon -v /var/lib/mongodb/*

그래도 작동하지 않으면 컨텍스트를 직접 적용해 보십시오.

$ chcon system_u:object_r:mongod_var_lib_t:s0 /var/lib/mongodb
$ chcon system_u:object_r:mongod_var_lib_t:s0 /var/lib/mongodb/*

컨텍스트가 올바른지 확인합니다.

$ ls -lZ -d /var/lib/mongodb
drwxr-xr-x. mongod mongod system_u:object_r:mongod_var_lib_t:s0 /var/lib/mongodb
sudo chmod -R 666 /var/lib/mongodb

또 다른 해결책은...

언급URL : https://stackoverflow.com/questions/43137250/mongodb-3-4-3-permission-denied-wiredtiger-kv-engine-cpp-267-error-with-ubuntu-1

반응형