문제 해결
이 페이지의 내용
공개 키를 검색할 때 발생하는 오류
MongoDB Community Edition 설치 절차의 Import the public key used by the package management system 단계 중에 "gpg: no valid OpenPGP data found."
오류가 발생할 수 있습니다.
문서에 설명된 대로 정확하게 명령을 복사해야 합니다. 작업은 OK
로 응답해야 합니다.
MongoDB 공개 GPG 키가 시스템에 있는지 확인하려면 터미널에서 다음 명령을 실행합니다.
sudo apt-key list
출력에는 다음과 유사한 항목이 포함되어야 합니다.
/etc/apt/trusted.gpg -------------------- pub rsa4096 2018-04-18 [SC] [expires: 2023-04-17] E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B uid [ unknown] MongoDB 8.0 Release Signing Key <packaging@mongodb.com>
실행 중 오류 sudo apt update
MongoDB Community Edition 설치 절차의 일부로 sudo apt-get update
를 실행할 때 다음과 유사한 오류가 하나 이상 발생할 수 있습니다.
W: GPG error: https://repo.mongodb.org/apt/ubuntu <release>/mongodb-org/8.0 Release: \ The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4B7C549A058F8B6B E: The repository 'https://repo.mongodb.org/apt/ubuntu <release>/mongodb-org/8.0 Release' \ is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
이 오류는 MongoDB Community Edition 설치 절차의 Import the public key used by the package management system 단계에서 MongoDB 공개 GPG 키가 추가되지 않았음을 나타냅니다.
일반적으로 MongoDB Community Edition 설치 절차의 Import the public key used by the package management system 단계를 반복하면 이 문제가 해결됩니다. 명령 및 키를 문서에 설명된 대로 정확하게 복사해야 합니다.
터미널에서 다음 명령을 실행하여 MongoDB 공개 GPG 키가 시스템에 존재하는지 확인할 수 있습니다.
sudo apt-key list
출력에는 다음과 유사한 항목이 포함되어야 합니다.
-------------------- pub rsa4096 2018-04-18 [SC] [expires: 2023-04-17] E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B uid [ unknown] MongoDB 8.0 Release Signing Key <packaging@mongodb.com>
실행 중 오류 sudo apt install -y mongodb-org
MongoDB Community Edition 설치 절차의 Create a list file for MongoDB 단계에서 sudo apt install -y mongodb-org
를 실행할 때 다음과 유사한 오류가 발생할 수 있습니다.
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package mongodb-org
이 오류는 /etc/apt/sources.list.d/mongodb-org-8.0.list
가 잘못 구성되었거나 누락되었을 수 있음을 나타냅니다.
mongodb-org-8.0.list
파일의 내용을 검토하려면 터미널이나 셸에서 다음 명령을 실행하세요.
cat /etc/apt/sources.list.d/mongodb-org-8.0.list
파일 내용이 위에 링크된 단계의 Ubuntu 버전에 대한 문서와 정확히 일치하지 않으면 파일을 제거하고 Create a list file for MongoDB 단계를 반복합니다. 파일이 없는 경우 해당 단계의 일부로 파일을 생성합니다.
mongodb-org-8.0.list
파일이 존재하고 올바른 컨텐츠가 있는지 확인한 후 sudo apt update
를 실행하여 apt
리포지토리를 업데이트하고 sudo apt install -y mongodb-org
를 다시 시도합니다.
다음과 같은 이유로 패키지를 설치할 수 없습니다. dpkg-deb: error
mongodb-org
패키지를 설치할 때 다음과 유사한 오류가 발생할 수 있습니다.
dpkg: error processing archive /var/cache/apt/archives/mongodb-org-server_8.0.0_amd64.deb (--unpack): trying to overwrite '/usr/bin/mongod', which is also in package mongodb-server-core 1:3.6.3-0ubuntu1
이 오류는 공식 MongoDB Inc. mongodb-org
패키지를 설치하기 전에 시스템에 이미 Ubuntu mongodb
패키지가 설치되어 있었음을 나타냅니다. 호스트에 Ubuntu mongodb
패키지가 설치되어 있는지 확인하려면 터미널 또는 셸에서 다음 명령을 실행합니다.
sudo apt list --installed | grep mongo
결과가 다음과 비슷하다면, MongoDB Community Edition 설치 절차를 다시 시도하기 전에 Ubuntu mongodb
패키지를 제거해야 합니다.
mongodb/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed] mongodb-clients/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed,automatic] mongodb-server/bionic,bionic,now 1:3.6.3-0ubuntu1 all [installed,automatic] mongodb-server-core/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed,automatic]
설치 절차를 다시 시도하기 전에 터미널이나 셸에서 다음 명령을 실행하여 Ubuntu mongodb
패키지를 완전히 제거합니다.
sudo apt remove mongodb sudo apt purge mongodb sudo apt autoremove
참고
sudo apt purge mongodb
Ubuntu mongodb
패키지에 의해 설치된 모든 기본 구성 파일을 제거합니다. 이러한 구성 파일을 수정했고 해당 수정 사항을 유지하려면 해당 파일을 /home/your-user-name
과 같은 다른 디렉토리에 복사합니다.
출력에 mongodb-org
및 mongodb
바이너리가 혼합되어 있는 경우, Ubuntu mongodb
패키지를 제거하고 퍼지하기 전에 먼저 mongodb-org
패키지에 대해 apt remove
, apt
purge
, apt autoremove
를 수행해야 할 수 있습니다. 모든 MongoDB 관련 패키지를 삭제한 후 설치 절차를 다시 시도하세요.
mongod
소켓 열기와 관련된 오류를 보고합니다.
mongod
를 시작할 때 Socket is already in use
또는 Failed to unlink socket file
오류가 발생할 수 있습니다. 이러한 오류는 일반적으로 mongod
프로세스에 대해 구성된 포트를 사용하는 다른 프로세스(일반적으로 시스템에서 실행 중인 다른 mongod
)를 나타냅니다.
다음 예시에서는 ss
유틸리티를 사용하여 서비스 이름이나 호스트 이름(-n
)을 해석하지 않고 LISTEN
(-l
) 상태의 열려 있는 모든 TCP(-t
) 또는 UDP(-u
) 소켓과 각 소켓을 사용하는 프로세스(-p
)를 나열합니다.
sudo ss -tulpn
다음 부분 출력은 27017
포트에서 수신 대기 중인 mongod
프로세스를 보여 줍니다. 동일한 포트에서 다른 mongod
프로세스를 실행하려고 하면 소켓 오류가 발생합니다.
Netid State Local Address:Port udp UNCONN 127.0.0.53%lo:53 users:(("systemd-resolve",pid=663,fd=12)) udp UNCONN 10.1.16.87%enp0s3:68 users:(("systemd-network",pid=652,fd=15)) tcp LISTEN 127.0.0.53%lo:53 users:(("systemd-resolve",pid=663,fd=13)) tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=819,fd=3)) tcp LISTEN 192.168.1.15:27017 users:(("mongod",pid=10027,fd=12)) tcp LISTEN 127.0.0.1:27017 users:(("mongod",pid=10027,fd=11)) tcp LISTEN ::]:22 users:(("sshd",pid=819,fd=4))
시스템에 원하는 포트에서 실행 중인 mongod
또는 다른 시스템 프로세스가 있는 경우 기존 프로세스를 종료하거나 새 mongod
프로세스를 위한 새 포트를 선택해야 합니다. net.port
구성 파일 옵션을 지정하여 mongod
가 수신 대기하는 포트를 변경할 수 있습니다.
mongod
데이터 디렉토리와 관련된 오류를 보고합니다.
mongod
프로세스 로그에서 다음과 유사한 오류가 발생할 수 있습니다.
Data directory ... not found Attempted to create lock file on a read-only directory: ...
일반적으로 이러한 오류는 MongoDB 데이터 디렉토리가 존재하지 않거나 mongod
에서 액세스할 수 없음을 나타냅니다.
데이터 디렉토리가 존재해야 합니다.
데이터 디렉토리는 구성 파일에서 storage.dbPath
설정으로 지정하거나, 명령줄에서 --dbpath
옵션을 mongod
로 설정하여 지정할 수 있습니다.
apt
패키지 관리자를 통해 MongoDB를 설치한 경우 기본/etc/mongod.conf
구성 파일은storage.dbPath
를/var/lib/mongodb
로 설정합니다.명령줄에서
mongod
를 실행하고--dbpath
옵션을 완전히 생략하는 경우, MongoDB는/data/db
의 기본--dbpath
를 사용합니다.
위의 데이터 디렉토리 경로 중 하나를 사용하든, 구성 파일이나 명령줄에 고유한 경로를 제공하든, mongod
를 시작하기 전에 파일 시스템에 데이터 디렉토리가 있는지 확인해야 합니다. mkdir
명령으로 Ubuntu에서 디렉토리를 만들 수 있습니다.
데이터 디렉토리에 액세스할 수 있어야 합니다.
데이터 디렉토리를 적절한 권한 및 소유권 설정으로 구성하여 mongod
이(가) 디렉터리 콘텐츠를 읽고, 쓰고, 탐색할 수 있도록 해야 합니다(rwx
사용자 또는 그룹 권한).
mongod
을(를) 시작하기 전에 chown
및 chmod
을(를) 사용하여 권한을 수정하고 user:group
소유권을 적절히 설정하세요.
데이터 디렉토리 를 사용하여시작 mongod
서비스형 mongod
로 시작하는 사용자(예: sudo
systemctl start mongod
또는 sudo service mongod start
사용)는 일반적으로 /etc/mongod.conf
의 기본 dbPath
값을 다음과 같이 수정한 경우에만 이러한 오류를 볼 수 있습니다.
mongodb
사용자 또는mongodb
그룹이 디렉토리 및 해당 콘텐츠를 읽고, 쓰고, 실행(rwx
)하는 것을 허용하지 않는 디렉토리 또는존재하지 않는 디렉토리입니다.
서비스 정의를 사용하지 않고 mongod
를 시작하는 사용자(예: 터미널을 사용하여 mongod
를 실행하는 경우)에게는 일반적으로 다음과 같은 오류가 표시됩니다.