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


105

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

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

답변:


213

기본적으로 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"
    

17
userAdminAnyDatabase 역할로 사용자를 생성하면 데이터베이스를 생성 할 수 없습니다. 따라서 역할 섹션은 역할 : [{역할 : "root", db : "admin"}]
georgeos


1
dbpath를 찾으려면 다음을 사용하십시오. grep dbPath /etc/mongod.conf
rckd

14

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

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


1

이전에 제공된 답변 외에도 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 예외를 사용하는 연결은 관리 데이터베이스에서 첫 번째 사용자를 만들 수있는 액세스 권한 만 갖습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.