MongoDB 설치 삭제 - MongoDB seolchi sagje

Install MongoDB Community Edition on Ubuntu — MongoDB Manual

docs.mongodb.com

MongoDB 설치 삭제 - MongoDB seolchi sagje

설치 절차


MongoDB public GPG Key Import

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

* 오류 시 패키지 설치 후 다시 진행

sudo apt-get install gnupg

MongoDB 저장소 등록 (18.04)

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

MongoDB 저장소 등록 (16.04)

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

패키지 DB 업데이트

sudo apt-get update

최신 버전 설치

sudo apt-get install -y mongodb-org

* 버전 지정

sudo apt-get install -y mongodb-org=4.2.6 mongodb-org-server=4.2.6 mongodb-org-shell=4.2.6 mongodb-org-mongos=4.2.6 mongodb-org-tools=4.2.6

서비스 시작

sudo systemctl start mongod

삭제 절차


서비스 중지

sudo service mongod stop

패키지 삭제 

sudo apt remove mongodb-org*

패키지 삭제 (환경파일까지)

sudo apt-get purge mongodb-org*

Data 와 Log 삭제

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

기타


설치된 패키지 확인

sudo apt list --installed | grep mongo
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]


1.     몽고DB의 public GPG key 주입

ubuntu@dev:~$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

OK

2.     몽고DB를 위한 리스트 파일 생성

ubuntu@dev:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

3.     로컬 패키지 데이터베이스 갱신

ubuntu@dev:~$ sudo apt-get update

4.     몽고DB 설치

ubuntu@dev:~$ sudo apt-get install -y mongodb-org

5.     몽고 서비스 실행

ubuntu@dev:~$ sudo service mongod start

6. 관리자 계정 추가

MongoDB에 다시 접속하여 관리자 계정을 추가한다.

$ mongo
>use admin

db.createUser({            

    user: “유저아이디" ,            

    pwd: “패스워드",            

    roles: [‘root’]

})
uncaught exception: Error: couldn't add user: command createUser requires authentication :

해당 오류가 뜬다면 이는 /etc/mongod.conf에서 security.authorization이 true로 설정되어 있기 때문이었다.
책에서 사용하던 버전에서는 원래 주석처리되어 있었는지 이후에 추가하도록 되어있는데, 이번에 설치한 4.2.9 버전에서는 처음부터 작성되어 설치되어서 문제가 되었다.

잠깐 주석 처리하고 sudo service mongod restart하니 정상적으로 admin 사용자를 추가할 수 있었다

7. 인증 설정

MongoDB에 접속할 때 인증과정이 이루어지도록 설정파일을 수정한다.

우선 MongoDB를 종료한 후 수정을 한다.

ubuntu@dev:~$ sudo service mongod stop

ubuntu@dev:~$ sudo vim /etc/mongod.conf

mongod.conf 설정파일의 security 항목의 주석을 해제한 후 그 하단에 authorization: enabled 를 추가한다.

security:

  authorization: enabled

8. 인증 접속

MongoDB를 다시 실행한 후 등록한 계정 정보로 접속을 시도해 보자.

ubuntu@dev:~$ sudo service mongod start

ubuntu@dev:~$ mongo admin -u test -p test1234

9. 외부 접속 설정

MongoDB는 기본적으로 로컬호스트에서만 접속이 가능하도록 설정되어 있다. 외부 접속을 위해서는 net 항목의 bindIp 항목을 0.0.0.0으로 변경한다. (포트도 변경 가능)

net:

  port: 27017

  bindIp: 0.0.0.0

10. 몽고 DB 삭제 방법

sudo apt-get remove mongodb-org

sudo apt-get purge mongodb-org*

sudo rm -rf /var/log/mongodb

sudo rm -rf /var/lib/mongodb

이번 글에서는 MongoDB를 설치하는 방법에 대해서 공유합니다. 

현재 최신 버전인 mongoDB 4.4를 설치합니다.

리눅스(ubuntu 18.04)

하단에 있는 mongoDB의 공식 사이트를 설치 방법을 참조하시는 것이 좋습니다. 

설치 하기

// ubuntu 18.2 & mongoDB 4.4
 
// mongoDB의 public key를 등록합니다. 
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
 
// mongoDB의 4.4를 생성하기 위한 리스트 파일 설정
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
 
// 로컬 패키지 데이터 베이스 업데이트
sudo apt-get update
 
// 최신버전의 mongoDB 설치
sudo apt-get install -y mongodb-org
 
// 서비스 시작
sudo systemctl start mongod

# mongoDB 종료
mongo localhost/admin -u <유저명> -p <비밀번호>
 
> use admin
 
# localhost로 접속해야 됨
> db.shutdownServer();

삭제 방법

// apt로 설치된 mongoDB 확인
sudo apt list --installed | grep mongo
 
// 제거 ex) sudo apt remove mongodb-server
 
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

참조

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

공 통

몽고 디비 설정 파일 

https://docs.mongodb.com/manual/reference/configuration-options/index.html

몽고 DB의 설정 파일은 YAML 포맷으로 되어 있습니다. 

경 로

플랫폼 파일 위치
Linux /etc/mongod.conf
macOS /usr/local/etc/mongod.conf
Windows <install directory>\bin\mongod.cfg

중요 옵션

자주 사용하는 옵션

타입 기본값 설명
net.bindIp localhost

ip address 정보

ex) 0.0.0.0

net.port

27017 - mongod
27018 - shard member
27019 - config server member

MongoDB의 포트번호
processManagement.fork false 백그라운드에서 실행하도록 mongod에 데몬 모드를 설정합니다. 
processManagement.pidFilePath 경로 mongod의 프로세스 ID를 저장할 경로를 지정합니다.  
processManagement.timeZoneInfo /usr/share/zoneinfo  
replication.enableMajorityReadConcern true

Read Concern은 아래와 같은 타입이 있음
local : 본인의 NODE 확인
majority : 다수의 NODE가 동의

replication.oplogSizeMB 사용 가능한 disk의 5% 공간

replication 작업을 위한 로그 사이즈의 최대 크기 설정 (MB단위)

replication.replSetName  

mongod 가 속한 replication 셋트의 이름입니다.
replication set에 속한 모든 인스턴스들은 동일한 값을 가집니다.

systemLog.destination "file" or "syslog"

file : systemLog.path 경로에 파일을 기록합니다.
file 옵션을 추천하는 이유는 syslog의 경우 timestamp를 syslog가 생성하기 떄문에
로그가 생성된 시간하고 불일치 할 수 있음(특히 부하가 심한 경우)

systemLog.logRotate rename

rename : 로그 파일의 이름을 변경합니다. 
reopen : 일반적인 linux/unix의 동작 방식에 따라 로그파일을 관리합니다.
reopen을 사용하는경우 logAppend도 true로 설정해야 함.

systemLog.path /var/log/mongodb/mongod.log 로그가 기록되는 경로
systemLog.quiet false mongos 또는 mongod를 조용한 모드로 실행합니다. 
systemLog.syslogFacility user syslog에 기록되는 메시지를 설정
systemLog.traceAllExceptions false 디버깅을 위한 자세한 정보를 출력 
systemLog.verbosity 0

로그 상세 수준을 설정합니다. 
디버그 메시지를 추가하려면 1 ~ 5 사이 값을 설정해야합니다. 

Mongo 계정 추가 방법

// 클라이언트로 접속
mongo
 
// admin으로 변경
> use admin
 
// pbnadmin 계정 추가
> db.createUser({user : "admin", pwd:"12345", roles :['root'], mechanisms : ["SCRAM-SHA-1"]})