Infra System

mongodb install on ec2

kellis 2020. 10. 13. 16:43

How to Install Mongodb With Authentication on EC2 AMI Linux를 참고하여, EC2에 Mongodb를 설치했습니다. 이 포스트에서는 직접 실행했던 명령어와 설치&테스트를 하면서 겪었던 문제를 정리해 보겠습니다. 

 

설치방법

1. mongodb yum repository 등록

vi /etc/yum.repos.d/mongodb-org-3.0.repo

등록 내용은 아래와 같습니다. 

 

[mongodb-org-3.0.repo]

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

2. yum으로 mongodb 설치

sudo yum install -y mongodb-org

3. mongodb 실행

sudo service mongod start

4. 시스템이 재부팅돼도 mongodb가 자동으로 실행될 수 있도록 등록

sudo chkconfig mongod on

5. mongodb 접속 및 user 생성

#mongodb 접속
mongo
  
#이하 명령은 mongodb shell에서 실행하는 명령이다.
#admin database 접속
#참고로, mongodb는 database를 create하지 않아도 바로 사용 가능하다.
use admin
  
#user 생성
db.createUser(
{
user: "admin",
pwd: "admin#",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
  
#air database 접속
use air
  
#권한이 제한적인 user생성
db.createUser(
{
user: "air",
pwd: "air#",
roles: [ { role: "readWrite", db: "air#" } ]
}
)

6. mongodb가 authorization check를 수행하도록 설정

vi /etc/mongod.conf

설정해야 할 내용은 아래와 같습니다. 

security:
 authorization: "enabled"

7. 설정을 변경했으니, mongodb를 재실행

sudo service mongod restart

8. 외부에서 접속 가능하도록 설정

vi /etc/mongod.conf

설정 내용은 아래와 같습니다. 

bindIp: 0.0.0.0

시행착오

- RoboMongo에서 테스트했을 때, Auth Mechanism을 변경했더니 Authorization Fail 문제가 발생했다. 기본 값인 SCRAM-SHA-1로 세팅해야 한다. 

- Springboot에서 테스트 했을 때, Connection은 정상적으로 되었지만 find/insert시에 not authorized for query (code:13) 에러가 발생했다. 이는 application.yml 설정을 바꿔줌으로써 해결했다. 

#비동작 코드
mongodb:
      #uri: mongodb://52.79.236.7:27017
      database: air
      username: air
      password: air#
       
#동작 코드
mongodb:
      host: 15.164.216.148
      port: 27017
      database: air
      username: air
      password: air#