1. MongoDB 설치
MongoDB 설치 과정에서 E 드라이브나 D 드라이브로 경로를 지정하면 디스크 공간 관리가 용이합니다.
특히 Windows 서비스로 등록하면 서버 재부팅 시 MongoDB를 자동 실행할 수 있어 유용하니 가급적이면 윈도우 서비스로 등록해서 사용하시길 바랍니다. (요즘에는 설치 과정에서 자동으로 등록 될 겁니다.)
서비스 등록 후에도 실제로 서비스가 실행 중인지 확인해야 했습니다. 설치 후 실행창에 services.msc
로 상태를 점검하는 절차를 포함하면 좋을 것 같습니다.
2. MongoDB 환경 변수 설정
MongoDB 실행 파일에 쉽게 접근하려면 설치 디렉토리의 bin
경로를 환경 변수 Path에 추가합니다.
환경 변수 추가 방법
- 제어판 > 시스템 > 고급 시스템 설정 > 환경 변수로 이동합니다.
Path
를 선택하고 편집합니다.- MongoDB 설치 디렉토리의
bin
폴더 경로를 추가합니다. (예:D:\MongoDB\bin
)
이 설정으로 어디서나 명령어를 실행할 수 있습니다. 해당 설정은 설치 과정에서 자동으로 잡아 주는데 혹여 새로 잡거나 아니면 설정이 안되어 있으면 반드시 설정하셔야 전역에서 MongoDB에 접근할 수 있습니다.
초보 사용자에게는 환경 변수 설정이 다소 까다롭게 느껴질 거 같다는 생각에 설치 프로그램에서 이 설정을 자동화하면 좋겠다고 생각 했는데 요즘엔 다 지원하는 듯 싶네요.
이외에 설정 후, bin
폴더에 다음 파일들이 있는지 확인합니다.
- mongod: MongoDB 서버 실행 파일
- mongodump: 데이터 덤프 도구
- mongorestore: 데이터 복원 도구
- mongod.cfg: MongoDB 설정 파일
특히 아래 백업 및 복원을 위해서는 mongodump와 mongorestore 파일 있어야 하므로 반드시 확인 하시길 바랍니다.
3. MongoDB 데이터베이스 백업 및 복원
백업과 복원은 MongoDB 운영에서 가장 빈번하게 사용하는 작업 중 하나로서 개발자라면 반드시 필수적으로 알아야 합니다. 해당 내용은 gui가 아닌 cmd 같은 콘솔창에서 바로 쓸 수 있는 명령어이니 코드 복사해서 변수 값만 바꿔서 쓰시면 됩니다.
명령어 예제
# 데이터베이스 백업
mongodump --host localhost -u eco -p ecdfdf8! -d df_chatbot
# 데이터베이스 복원
mongorestore --host localhost -u eco -p ecdfdf8! -d df_chatbot
주의사항
- 복원 시 기존 데이터를 덮어쓸 위험이 있습니다. 중요한 데이터는 복원 전에 임시 백업을 생성하세요.
- 대규모 데이터베이스의 경우, 개별 컬렉션을 대상으로 백업 및 복원을 실행하는 방법도 익혀두는 것이 유용합니다.
덤프와 복원의 명령어가 간단하여 따로 스크립트 적어서 매번 사용해도 되지만 가급적이면 설정 파일을 활용한 자동화 스크립트를 만들어 두면 더 효율적일 것 같습니다. 물론 자주 사용한다면 말이죠.
4. MongoDB 보안 설정 및 계정 관리
MongoDB는 기본적으로 인증이 비 활성화되어 있습니다. 운영 환경에서는 반드시 인증 서비스를 활성화해야 합니다.
1) 인증 활성화
mongod.cfg
파일에서 아래와 같이 보안을 설정합니다:
security:
authorization: enabled
2) 외부 접속 설정
외부 접속을 허용하려면 네트워크 인터페이스 설정을 변경합니다:
net:
port: 27017
bindIp: 0.0.0.0
주의사항:
bindIp: 0.0.0.0
은 모든 네트워크 연결을 허용하므로, 반드시 방화벽을 설정하여 특정 IP만 접근하도록 제한해야 합니다. 그리고 27017로 설정된 포트 몽고디비 기본 포트로서 보안에 취약한 것이 있어 가급적이면 포트 번호로 바꿔서 외부 접속 설정을 하는게 좋을 듯싶습니다.
보안 설정에서 느낀 점:
- 초기에는 인증 없이 외부에서 접속 가능하다는 점이 위험하게 느껴졌습니다. 실제로 해당 데이터베이스가 해킹되어 데이터가 다 암호화 되고 복호화에 대한 대가성 코인을 요구 당한 적이 있었습니다. 다행히 백업 파일로 복구는 했지만 일반 RDB와 다르게 방화벽 설정을 포함한 보안 절차를 필수적으로 추가해야 한다는 점을 배웠습니다.
5. MongoDB 사용자 계정 설정
관리자 계정 생성
관리자 계정은 admin
데이터베이스에서 생성하는데 아래 코드는 root권한과 읽고 쓰기의 권한을 부여한 것입니다.
db.createUser({
user: "root",
pwd: "eco8gggg",
roles: ["root", "readWrite"]
});
일반 계정 생성
일반 사용자는 필요한 데이터베이스에서 생성으로 dbOwner 권한을 부여하여 데이터베이스 접근을 포함하고 읽고 쓰기 다 가능하게 했습니다.
use eco_chatbot;
db.createUser({
user: "eco",
pwd: "eco8gggg",
roles: ["dbOwner"]
});
느낀 점:
- 계정을 생성한 후 권한 별로 테스트하면서 보안 설정이 제대로 작동하는지 확인하는 과정이 중요하다는 것을 알게 되었습니다.
6. MongoDB 운영 도구 활용 Robo 3T
만약 cmd창이나 콘솔창에서 하기 어려우면 Robo 3T와 같은 GUI 도구를 사용하면 MongoDB 설정 및 데이터 상태를 직관적으로 편리하게 db 백업이나 복구 그리고 CRUD를 다 할 수 있습니다. 특히 계정 정보와 데이터베이스 설정을 검증할 때 cmd 같은 콘솔에서 하는 것보다 훨씬 편의성 증진됩니다.
결론
위 과정을 통해 MongoDB를 설치하고 보안을 강화하며, 데이터베이스 백업 및 복원 방법을 익힐 수 있습니다. 특히 보안 설정과 인증 서비스를 활성화하여 외부 접속을 안전하게 관리하는 것이 중요합니다.
느낀 점:
MongoDB 설치 및 관리 과정에서 설정 파일 조정과 복원 시 데이터 손실 가능성이 주요 불편함으로 느껴졌습니다. 다음에는 자동화된 스크립트를 활용해 반복 작업을 간소화하고 시스템의 안정성을 확보하는게 좋겠다는 생각이 들었습니다. 또한 Robo3T를 적극 활용하여 좀 더 많은 사람들과 UI를 보면서 논의를 하는게 협업할 때 도움이 되었기에 Robo3T 활용 방법에 대해서도 좀 더 관심을 기울이면 추후 성과에 도움이 될거 같았습니다.