프로젝트에 채팅 기능을 올리면서 MongoDB를 사용하게됬다. Docker 이미지를 받고 컨테이너를 실행시킨 후 IntelliJ에서 플러그인으로 제공되는 'MongoDB Browser'를 이용했다.
IntelliJ를 재실행 후 오른쪽 메뉴바를 보면 MongoDB Browser 아이콘이 생긴 모습을 볼 수 있다. '+' 버튼을 눌러 직접 연동을 해주어야한다.
구분을 해주기위해 Label 값을 입력해주고 User Database에는 사용할 DB 이름을 설정해줬다.
Authentication 탭으로 넘어와서 Docker 컨테이너를 실행할 때 환경변수로 지정해줬던 username과 password 입력하고 'Auth.databse'는 admin을 입력해주었다.
직접적인 채팅을 주고 받기 전에 먼저 채팅방을 만드는 API를 테스트하기 위해 Postman을 이용했다.
com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'Command insert requires authentication' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "Command insert requires authentication", "code": 13, "codeName": "Unauthorized"}
API 호출했지만 500 Internal Server Error가 발생했고 콘솔 로그 내용을 확인해보니 Insert 요청에는 권한이 필요하다는 내용이었다.
MongoDB를 연동할 때 Authentication 탭에 있는 'Auth.databse'에 분명 'admin'으로 지정을 해주었지만 추가적으로 application.yml에도 지정을 해주었다.
uri안에 포함되어있던 host와 port 값을 각각 host, port에 입력해주었고, 새롭게 authentication-database라는 항목을 추가하여 admin을 넣어주었다.
Postman API 호출 결과 정상적으로 작동하였고, MongoDB에도 Insert가 제대로 된 모습을 확인할 수 있다.