아래는 MongoDB에서 데이터베이스를 생성하고, 사용자 계정을 추가하며, 적절한 권한을 부여하는 방법에 대한 단계별 가이드입니다. 기본적으로 MongoDB는 사용자가 접속할 때 인증 없이 접속할 수 있도록 설정되어 있으나, 실제 운영 환경에서는 인증을 활성화하여 보안을 강화하는 것이 좋습니다.
1. MongoDB 셸 접속
MongoDB 서버가 실행 중이라면, 터미널 혹은 명령 프롬프트에서 아래와 같이 기본 mongosh (또는 이전 버전의 mongo 쉘)를 실행합니다.
mongo
또는 최신 버전의 경우:
mongosh
2. 원하는 데이터베이스 선택(또는 생성)
MongoDB에서는 사용자가 지정한 데이터베이스가 존재하지 않을 경우, 최초 데이터를 삽입할 때 자동으로 생성됩니다. 우선 사용할 데이터베이스로 전환합니다.
예를 들어, myDatabase 라는 데이터베이스를 사용하고자 한다면:
use myDatabase
위 명령을 실행하면 현재 작업 데이터베이스가 myDatabase로 설정되며, 데이터가 삽입되면 데이터베이스가 생성됩니다.
3. 사용자 계정 생성 및 권한 부여
데이터베이스가 선택되었으면 이제 해당 데이터베이스에 접근할 사용자 계정을 생성하고, 그 계정에 알맞은 권한을 부여할 수 있습니다. MongoDB에서는 db.createUser() 메서드를 사용하여 이를 수행합니다.
예를 들어, myUser라는 사용자 계정을 myDatabase 데이터베이스에 대해 생성하고, readWrite 권한을 부여하려면 다음과 같이 명령을 실행합니다.
db.createUser({
user: "myUser", // 생성할 사용자 이름
pwd: "myPassword", // 사용자 암호 (강력한 암호를 사용하세요)
roles: [
{ role: "readWrite", db: "myDatabase" } // myDatabase에서 읽기/쓰기 권한 부여
]
})
이 명령은 해당 데이터베이스에 대해 읽기 및 쓰기(readWrite) 작업을 수행할 수 있는 사용자를 생성합니다.
주요 역할(Role) 설명
- read: 데이터베이스에서 읽기 전용 액세스를 제공합니다.
- readWrite: 데이터베이스에서 데이터 읽기 및 쓰기(삽입, 수정, 삭제 등)가 가능합니다.
- dbAdmin: 데이터베이스 관리 작업(인덱스 관리, 통계 등)을 수행할 수 있습니다.
- userAdmin: 해당 데이터베이스의 사용자 관리를 할 수 있습니다.
복수의 역할을 부여하고 싶을 경우, roles 배열에 원하는 역할을 추가할 수 있습니다.
예를 들어, 데이터 읽기/쓰기 권한과 데이터베이스 관리 권한을 모두 부여하려면:
db.createUser({
user: "myUser",
pwd: "myPassword",
roles: [
{ role: "readWrite", db: "myDatabase" },
{ role: "dbAdmin", db: "myDatabase" }
]
})
4. 인증 활성화 및 연결
실제 운영 환경에서는 MongoDB 설정 파일(mongod.conf)에서 보안을 위해 인증을 활성화합니다. 인증을 활성화하려면 설정 파일에 다음과 같이 추가합니다.
security:
authorization: enabled
서버를 재시작한 후, MongoDB 셸 또는 클라이언트 애플리케이션에서는 생성된 사용자 계정을 사용하여 접속합니다.
예를 들어, 셸에서 접속할 때:
mongo -u myUser -p myPassword --authenticationDatabase myDatabase
이 명령은 myDatabase에서 인증 후 접속할 수 있도록 해줍니다.
이처럼 MongoDB에서 데이터베이스 생성, 사용자 계정 생성 및 권한 부여는 간단한 명령어를 통해 수행할 수 있습니다. 실습을 통해 명령어에 익숙해지고, 운영 환경에서는 반드시 인증을 활성화하여 데이터베이스 보안을 강화하는 것이 중요합니다.