집 짓는 개발블로그
ec2 ubuntu 22.04에 MongoDB 6.0 설치 + MongoDB 외부 접속 허용 + 사용자 계정 생성 본문
기존에 ubuntu 20.04에 MongoDB 4.4를 설치해 잘 사용하고 있었으나 프로젝트용 aws 계정을 하나로 합치는 과정에서 DB를 이사하게 되었다. 이번에는 ubuntu 22.04에 MongoDB 6.0을 설치했다.
이리저리 헤매며 시간낭비를 했는데 MongoDB 공식문서에 아주 잘 설명되어 있었다. 다음부턴 꼭 공식부터 확인하는 것으로 하자. ^^
환경
- windows 10
- ubuntu 22.04
ec2 ubuntu 22.04에 MongoDB 6.0 설치하기
1. 관리자 계정 접속
sudo su
2. public key import하기
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
apt-key는 deprecated되었다는 WARN이 뜰 것이다. 일단 성공적인 설치가 먼저기에 넘어갔다.
3. MongoDB를 위한 list파일 생성하기
이 부분이 다소 곤혹스러웠다만 MongoDB 공식문서 https://www.mongodb.com/docs/v6.0/tutorial/install-mongodb-on-ubuntu/ 에서 정답을 찾을 수 있었다.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse
4. local package 데이터베이스 reload하기
sudo apt update
5. MongoDB 패키지 설치하기
sudo apt install mongodb-org
6. MongoDB 실행하기 + status 확인하기
systemctl start mongod
systemctl status mongod
정상적으로 실행되었다면 다음과 같이 active한 상태가 확인된다.
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2023-12-09 18:20:21 UTC; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 38164 (mongod)
Memory: 102.7M
CPU: 827ms
CGroup: /system.slice/mongod.service
└─38164 /usr/bin/mongod --config /etc/mongod.conf
MongoDB 외부 접속 허용하기
1. 설정 파일 진입
sudo nano /etc/mongod.conf
2. bindIp 0.0.0.0으로 수정
나는 이미 수정한 상태지만 설치 후 최초로 설정파일을 열어보면 bindIP가 127.0.0.1로 되어있을 것이다. 이 부분을 0.0.0.0으로 수정해준다.
MongoDB 외부 접속을 위한 사용자 계정 등록
mongosh
mongo shell에 접속하는 명령어는 mongosh다. 6.0버전 이후로는mongo가 아닌 mongosh를 이용해야 한다. 직전까지 사용했던 4.4에서는 mongo로 접속할 수 있었다.
shell 접속 후 use admin을 치면 switched to db admin이 뜬다. 여기서 사용자를 등록해주면 된다. 제대로 등록됐다면 ok : 1이 뜰 것이다.
test>use admin
switched to db admin
admin> db.createUser({user:"원하는 유저네임", pwd:"원하는 패스워드", roles:["root"]});
{ ok: 1 }
admin> exit
shell을 빠져나온 후 재시작해준다.
service mongod restart
mongosh를 입력해서 다시 shell에 접속한 뒤 생성한 사용자를 확인할 수 있다.
admin> db.getUsers()
switched to db admin
users: [
{
_id: 'admin.~~',
userId: UUID('~~'),
user: '유저네임',
db: 'admin',
roles: [ { role: 'root', db: 'admin' } ],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
],
ok: 1
생성한 사용자 계정으로 mongoDBcompass에서 접속하면 편리하게 사용할 수 있다.
+ 설치 과정에서 발생했던 에러
Malformed entry 1 in list file
E: Malformed entry 1 in list file /etc/apt/sources.list.d/mongodb-org-6.0.list ([option] not assignment)
E: The list of sources could not be read.
에러의 원인으로 지목된 파일을 열어봤다.
sudo nano /etc/apt/sources.list.d/mongodb-org-6.0.list
1번째 줄에 이상한 내용이 있었다. 내가 앞서 list를 생성하기 위해 쳤던 명령어의 일부였는데, 대체 어쩌다 왜 list파일 내에 명령어가 들어가있던 건지는 모르겠다.
해당 내용을 지우니 문제가 해결되었다.
참고
https://www.mongodb.com/docs/v6.0/tutorial/install-mongodb-on-ubuntu/
https://www.mongodb.com/community/forums/t/how-to-install-mongodb-6-0-on-ubuntu-22-04/176976/7