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
권한(슈퍼 사용자 액세스라고도 함).실행하는 경우mongod
service 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.dbPath
mongod.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
할 수 없는 에는 서비스를 시작할 수 없는 경우에는 서비스에 자세한 합니다.mongod
file (로 표시)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/
이러한 문제를 트리거하는 세 가지 설정이 있습니다.
- 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
구성 파일을 지정합니다.
- MongoDB에 해당 dbpath에 해당하는 하나 이상의 파일 또는 디렉터리를 읽을 수 있는 권한이 없습니다.
chown mongodb:mongodb dbpath -R
.
- 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
'source' 카테고리의 다른 글
응답입니다.종료()가 유해하다고 간주됩니까? (0) | 2023.07.15 |
---|---|
VBA 함수 - 인수 선택 사항 아님 (0) | 2023.07.15 |
mariadb 기억이 안정되는 데 얼마나 걸립니까? (0) | 2023.07.10 |
Oracle 데이터베이스의 모든 저장 프로시저를 나열하려면 어떤 SQL을 사용해야 합니까? (0) | 2023.07.10 |
+=가 목록에서 예기치 않게 작동하는 이유는 무엇입니까? (0) | 2023.07.10 |