[mongodb] MongoDB 기본 사용자 및 비밀번호는 무엇입니까?

로컬 및 프로덕션에서 동일한 연결 문자열을 사용하고 있습니다. 연결 문자열이mongodb://localhost/mydb

사용자 이름과 비밀번호는 무엇입니까? 이런 식으로 보관하는 것이 안전합니까?



답변

기본적으로 mongodb에는 활성화 된 액세스 제어가 없으므로 기본 사용자 또는 암호가 없습니다.

액세스 제어를 활성화하려면 명령 줄 옵션 --auth또는 security.authorization 구성 파일 설정을 사용하십시오.

다음 절차를 사용 하거나 인증 활성화를 참조하십시오. MongoDB 문서에서 .

순서

  1. 액세스 제어없이 MongoDB를 시작합니다.

    mongod --port 27017 --dbpath /data/db1
    
  2. 인스턴스에 연결합니다.

    mongo --port 27017
    
  3. 사용자 관리자를 만듭니다.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. 액세스 제어를 사용하여 MongoDB 인스턴스를 다시 시작하십시오.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. 사용자 관리자로 인증하십시오.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    


답변

@Camilo Silva가 이미 언급 한 것 외에도 데이터베이스 생성, 데이터베이스 읽기, 쓰기 등의 무료 액세스 권한을 부여하고 싶지만 루트 역할을 생성하지 않으려면 다음과 같이 세 번째 단계를 변경할 수 있습니다.

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


답변

이전 2.6 이상의 MongoDB를 들어, 명령은 루트 사용자가 추가 할 수 있습니다 addUser(예를)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]})


답변

이전에 제공된 답변 외에도 db가 이미 액세스 제어 ( --auth스위치)로 시작된 경우 첫 번째 사용자를 생성하기 위해 ‘localhost 예외’접근 방식을 따르는 것이 하나의 옵션입니다 . 이를 위해서는 서버에 대한 localhost 액세스 권한이 있어야하며 다음을 실행해야합니다.

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

MongoDB 문서에 명시된대로 :

localhost 예외를 사용하면 액세스 제어를 활성화 한 다음 시스템에서 첫 번째 사용자를 만들 수 있습니다. localhost 예외와 함께 액세스 제어를 활성화 한 후 localhost 인터페이스에 연결하고 관리 데이터베이스에 첫 번째 사용자를 만듭니다. 첫 번째 사용자는 userAdmin 또는 userAdminAnyDatabase 역할이있는 사용자와 같은 다른 사용자를 생성 할 수있는 권한이 있어야합니다. localhost 예외를 사용하는 연결은 관리 데이터베이스에서 첫 번째 사용자를 만들 수있는 액세스 권한 만 갖습니다.

다음은 문서의 해당 섹션 에 대한 링크 입니다.


답변