MongoDB를 세우자~사용자 인증과 Backup/Restore~(Windows)

6188 단어 MongoDB
MongoDB 4.0.9
Windows10

네트워크상의 복수의 단말로부터 복수의 DB를 안전하게 사용할 수 있도록, 관리자, 혹은 지정의 어플리케이션 이외로부터 DB에 액세스 할 수 없게 하고 싶다.

MongoDB 서버를 설정 한 후 사용자 인증에 사용할 수있는 설정과 마침내 백업/복원 작업

설치



공식 다운로드 MongoDBwin판의 ver4부터는, 모두 디폴트로 인스톨하면 자동적으로 windows 서비스에 인스톨 되는 것이므로, windows의 서비스를 확인한다.



MongoDB의 속성을 보면 실행 파일의 경로가
"C:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg" --service

되어 있을 것. mongod.cfg가 설정 파일입니다. 나중에 만난다.

사용자 만들기



기본 설정에서 mongo는 인증없이 사용할 수 있습니다.
우선은 MongoDB를 이용하는 각 어플리케이션용으로, 그 DB밖에 사용할 수 없는 유저를 각각 만든다.
또한, 사용자를 만들 수있는 사용자 관리 용 사용자를 만든다.

다음 명령을 MongoDB 서버가 움직이는 단말기에서 실행.

DB가 없는데 갑자기 use hoge 하지만 문제 없음.
mongo

use hoge
db.createUser(
    {
        user: "userForHoge",
        pwd: "PASSWORD",
        roles:
        [
            {
                role: "readWrite",
                db: "hoge"
            }
        ]
    }
)

use fuga
db.createUser(
    {
        user: "userForFuga",
        pwd: "PASSWORD",
        roles:
        [
            {
                role: "readWrite",
                db: "fuga"
            }
        ]
    }
)

use admin
db.createUser(
    {
        user: "userAdmin",
        pwd: "PASSWORD",
        roles:
        [
            {
                role: "userAdminAnyDatabase",
                db: "admin"
            }
        ]
    }
)

이 후 사용자 인증을 붙이므로 앞으로 새로운 DB를 사용하고 싶을 때는 먼저 userAdmin으로 로그인하여 사용자를 만든 다음 그 사용자로 로그인해야합니다.

설정 mongod.cfg



MongoDB 서버 서비스가 시작할 때 읽는 구성 파일 C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg를 다음과 같이 편집하여 MongoDB 서버 서비스를 다시 시작합니다.

변경은 다음과 같습니다.
  • db와 log의 장소를 사용하기 쉬운 장소에 (지정한 paht는 이미 존재할 필요가 있다)
  • bindIp : 0.0.0.0 → 모든 IP 주소에서 연결 허용
  • authorization: enabled → 사용자 인증 사용
    ※ 코멘트는 지워지고 있습니다

  • mongod.cfg
    storage:
      dbPath: C:\path\to\db\
      journal:
        enabled: true
    
    systemLog:
      destination: file
      path:  C:\path\to\mongo.log
    
    net:
      port: 27017
      bindIp: 0.0.0.0
    
    security:
        authorization: enabled
    

    로그인



    여기까지 완료되면, 네트워크를 넘어 mongo 명령인지 Compass인지, 앱인지 확인해 보자.
    사용자 인증하지 않으면 읽고 쓸 수 없는 하즈.

    DB:hoge의 경우 URL로는
    mongodb://userForHoge:PASSWORD@ホスト名:27017/hoge
    

    mongo 명령이라면
    mongo -u userForHoge -p PASSWORD --authenticationDatabase hoge
    

    --authenticationDatabase 옵션은, 인증용 유저의 존재처를 나타낸다. DB 안에 사용자는 만들어지지만, 그 DB 이외의 조작 허가도 주어진다.

    새 DB를 만들 때는
    1. mongodb://userAdmin:PASSWORD@ホスト名:27017/admin에 로그인하여 DB에 대해 허용한 사용자 만들기
    2. 로그아웃
    3. 만든 유저로 들어간다

    MongoDB 백업



    DB 단위로 백업합니다.
    mongodump -u USER -p PASSWORD -d DBNAME --gzip --archive=C:\Garamon\Backup\DevHub
    
    # ※古いmongodは--gzip、--archiveオプションが効かない
    mongodump -u USER -p PASSWORD -d DBNAME C:\Garamon\Backup\DevHub
    

    복원



    백업한 것을 가져와 DB 단위로 복원.
    --drop 옵션은 현재 데이터를 삭제합니다.
    mongorestore -u USER -p PASSWORD --authenticationDatabase DBNAME --drop --gzip --archive=C:\Garamon\Backup\DevHub\archive.gz
    
    # ※古い端末からのdumpの場合ディレクトリになっている
    mongorestore -u USER -p PASSWORD --authenticationDatabase DBNAME -d DBNAME --drop DBNAME 
    

    좋은 웹페이지 즐겨찾기