Mongo DB 설치 및 초기세팅

접근제한 / 사용자권한

Posted by ETHAN KIM on November 05, 2022 · 2 mins read
Server

설치환경

Linux ver Centos7


1. YUM 리포지토리 추가 및 db설치

[ethank@ethanklocked etc]$ cat <<EOF> /etc/yum.repos.d/mongodb-org-5.0.repo
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF

[ethank@ethanklocked etc]$ yum install -y mongodb-org


2. 데몬 프로그램 시작 및 확인

[ethank@ethanklocked etc]$ systemctl start mongod
...
[ethank@ethanklocked etc]$ systemctl status mongod
...


3. 초기 접속 및 유저, 권한생성

[ethank@ethanklocked etc]$ mongo
MongoDB shell version v5.0.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f244a546-179e-4fab-ab2a-4da5838b6510") }
MongoDB server version: 5.0.8
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
...

//root 유저 생성
> use admin 
switched to db admin
> db.createUser({user:"admin",pwd:<password>,roles:["root"]})
Successfully added user: {
        "user" : "admin",
        "roles" : ["root"]
}

//테스트 DB ROLE 생성
> use testDb 
> db.createRole({role:"test_role", privileges:[],roles:[{role:"readWrite", db:"testDb"}]})
{
        "role" : "test_role",
        "privileges" : [ ],
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "testDb"
                }
        ]
}

//테스트 DB 사용자계정 생성
> db.createUser({user:"test_dev",pwd:"password",roles:[{role:"test_role", db:"testDb"}]})
Successfully added user: {
        "user" : "test_dev",
        "roles" : [
                {
                        "role" : "test_role",
                        "db" : "testDb"
                }
        ]
}
  


4. 접근제한 및 재접속

[ethank@ethanklocked etc]$ vi /etc/mongod.conf

//security 옵션 추가
...
security:
  authorization: enabled
...

//데몬 재시작
[ethank@ethanklocked etc]$ systemctl restart mongod

//재접속
[ethank@ethanklocked etc]$ mongo -u "admin" -p "password" --authenticationDatabase "admin"
...
[ethank@ethanklocked etc]$ mongo -u "test_dev" -p "password" --authenticationDatabase "admin"


정리

role, user 는 db 귀속
해당 db 에 대한 role은 해당 db에서 생성 가능
admin db에서 생성된 user가 다른 db role을 사용 가능
일반적으로 여러 db에 접근 가능성이 있기 때문에 admin db 에 user 생성 후 각 db role 부여