ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (MongoDB) Window에서 MongoDB 4.x 사용자 계정 생성 - service사용 시
    IT 지식 창고 2020. 12. 18. 18:50

    window에서 사용자 계정 생성할 때, 특히 window service를 사용해서 mongod를 실행하지 않고 백그라운드에서 MongoDB server를 활용하는 경우에 생성 방법입니다.

     

    다른 경우도 비슷하나, service로 사용할 경우는 service를 삭제한 후 재 설치해야 적용이 됩니다.

     

    우선, 사용자 계정을 생성하기 위해서는 MongoDB설치 시 자동으로 생성되어 있는 admin collection(table)에 계정을 추가해야 합니다.

     

    1. mongo를 실행 후 아래의 내용을 입력합니다. 계정 정보는 같은 DB폴더경로로만 되어있다면 유지됩니다.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "myUserPassword",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
      }
    )

    user에는 본인이 원하는 id가 되고, pwd에는 본인이 원하는 비밀번호를 설정하면 됩니다.

    그리고 roles을 통해서 관리를 하며, 예시로 적어 놓은 roles은 user와 pwd를 먼저 인증해야지 모든 collection과 계정에 접근이 가능하여, 조회 ,수정, 삭제 등 모든 권한이 가능합니다.

     

    * roles에 대한 자세한 내용을 잘몰라서 직접 MongoDB Manual을 찾아봐야할 것 같습니다. (언젠가는 찾아보겠죠..)

     

    server를 실행할 때 인증을 하도록하는 옵션을 주면서 실행시켜야합니다.

     

    mongod를 사용하는 경우는 --auth를 파라미터로 주고 실행시키면 되지만, window에서 service가 설치되어 있을 때 인증 옵션을 주려면 service를 삭제 후 재설치를 해야 합니다.

     

    MongoDB service를 삭제해야하는데, 삭제 후 옵션을 주거나 먼저 옵션을 주고 재설치해도 됩니다.

     

    2. 저는 service 삭제를 먼저 하겠습니다.

     

    작업관리자 또는 Ctrl + R -> services.msc에서 MongoDB service를 중지합니다.

     

    cmd창을 관리자권한으로 실행하고 아래와 같이 실행시키면 됩니다.

    mongod --remove

    그리고,

    sc.exe delete MongoDB

    이것을 꼭 해주셔야 완전히 삭제가 됩니다.

     

    옵션을 주기위해 설치할 때, 위에서 처럼 mongod --auth 처럼 실행할때 --install만 붙혀서 service를 설치하면 됩니다.

     

    하지만, 편리함과 server 구성요소를 저장하고 관리하기 위해서는 .cfg(mongod.conf)를 활용하는게 좋습니다.

    .cfg 파일을 관리자 권한으로 메모장을 열어서 아래의 내용을 찾습니다. (검색창에 메모장을 검색하고 오른쪽클릭 후 관리자권한으로 연 후 mongod.cfg파일을 불러옵니다.)

    #security:

    위 부분은 주석처리되어 있는 것으로 주석을 없앤후에 아래처럼 바꿔줍니다.

    security:
        authorization: enabled

    여기서도 주의할 점이 authorizaition: enabled처럼 띄어쓰기에 유의해야합니다.

     

    저장할 때, 만약 관리자권한으로 열지않았다면 저장을 못한다는 에러가 뜹니다.

    관리자 권한으로 열어서 저장하면 바로 저장되고, 관리자권한을 못찾겠다면 다른 곳에 저장했다가 원래의 mongod.cfg를 삭제하고 옮기면 됩니다. (덮어쓰기가 안될뿐...)

     

    3. 이제 service를 재 설치합니다.

    mongod --config "C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg" --install

     

    4. 사용자 인증 확인 단계로 cmd창에 mongo를 실행시키고 아래의 커맨드를 입력합니다.

    use admin
    db.admin.find()

    admin db에 모든 데이터를 찾는 커맨드인데 잘 적용이 되었다면 아래와 같이 error가 뜹니다.

    이러면 성공입니다. 제일 처음 추가한 roles때문에 다른 use는 사용이 가능해도 use testdb식으로 db를 바꾼후 조회나, 수정 모든 작업이 위와 같은 error가 뜹니다.

     

    * 사용자 계정 인증 방법

    use admin
    db.auth("myUserAdmin", "myUserPassword")
    db.admin.find()

    위와 같이 입력하면 아래와 같이 로그가 뜹니다.

    저는 mongodb라는 id와 mongodb라는 pw도 입력했었고, 성공하면 1이라는 값이 뜹니다.

    그리고 admin에는 계정추가 이외에 테이블에 데이터를 넣은 작업이 없으니 에러도 안뜨고, 데이터도 안뜹니다.

     

    댓글

Designed by Tistory.