수퍼 유저로 Mongo를 입력하거나 사용자를 재설정하려면 어떻게해야합니까?


29

나는 권한으로 놀고 있었고 Mongo 데이터베이스에서 자신을 잠갔습니다. 데이터베이스에 대한 액세스 권한을 명시 적으로 추가하여이 작업을 수행 한 것이 확실하지만 대신 데이터베이스에 대한 권한 만 허용하도록 덮어 썼습니다. 따라서 Mongo 데이터베이스가 효과적으로 잠겨 있으며 내가 읽는 모든 내용에 사용자 추가 권한이 있으면 슈퍼 사용자를 만드는 방법이 나와 있습니다. 지금은 해당 권한이있는 사용자가 없다고 생각합니다. 모든 액세스 권한으로 데이터베이스를 입력하는 방법이 있습니까? 서버를 소유하고 있으며 루트 액세스 권한이 있습니다.

답변:


38

자신을 잠그면 다음을 수행해야합니다.

  1. MongoDB 인스턴스 중지
  2. 인증을 비활성화하려면 MongoDB 설정에서 --auth 및 / 또는 --keyfile 옵션을 제거하십시오
  3. 인증없이 인스턴스 시작
  4. 필요에 따라 사용자를 편집하십시오
  5. 인증을 사용하여 인스턴스를 다시 시작하십시오.

인증을 제거하는 것만으로는 충분하지 않습니다. 감사합니다!
Andrei

14

수퍼 유저를 먼저 추가하지 않고 사용자를 만들 때 비슷한 문제가 발생했습니다. 다음 단계는 문제 해결에 도움이되었습니다.

  1. sudo( sudo vi mongodb.conf)를 사용하여 MongoDB 구성 파일을여십시오 .
    파일은 /etc/폴더 에서 찾을 수 있습니다 .
  2. 코멘트 "auth = true".
  3. MongoDB 서비스 중지 ( sudo service mongod stop)
  4. MongoDB 서비스 시작 ( sudo service mongod start)
  5. 그런 다음 아래 명령을 사용하여 "root"수퍼 유저를 작성하십시오.

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});
    

    참조 https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. 돌아가서 주석을 해제하십시오 "auth=true". mongodb 서비스를 중지하고 시작 / 다시 시작하십시오.


고마워요 프로젝트를 dev 서버에 업로드 할 때이 문제를 해결하려고 노력했습니다. 정말 고맙습니다! :)
Woppi

같게. 이것에 서버 오류 메시지가 놀랍게도 도움이되지 않습니다. 고맙습니다!
Tom

7

당신이 사용하는 경우 A를 복제 세트를keyfile

내부 인증을 사용하여 복제 세트 구성원 간 보안

키 파일은 복제 인증에 사용됩니다.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

이 명령을 사용하여 mongod에 관리자로 로그인 할 수 있습니다.

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

어쨌든 관리자를 만들거나 수정할 수 있습니다.

내부 역할

__systemMongoDB는 복제본 세트 멤버 및 mongos 인스턴스와 같은 클러스터 멤버를 나타내는 사용자 오브젝트에이 역할을 지정합니다. 이 역할은 보유자가 데이터베이스의 오브젝트에 대해 조치를 취할 수있는 권한을 부여합니다.

예외적 인 상황을 제외하고 응용 프로그램 또는 관리자를 나타내는 사용자 개체에이 역할을 할당하지 마십시오.


이 정보를 어디에서 찾았습니까?
10

2

이 질문에 대한 답변을 확인하십시오.

https://stackoverflow.com/questions/20117104/mongodb-root-user

기본적으로 여전히 서버에 액세스 할 수 있으면 Admin데이터베이스 에 액세스 할 수 있습니다 .

이 페이지에는 http://docs.mongodb.org/v2.4/reference/user-privileges/ 가 더 있습니다.

2.6 버전은이 기능이 완전히 작동하는 방식을 변경합니다. 2.6의 경우 http://docs.mongodb.org/manual/security/에서 더 많은 시간을 보내야합니다.


1
게시물에서 언급했듯이, 내가 찾은 유일한 정보입니다. 나는 그렇게 할 수있는 권한이 없습니다
Tony

0

Mongo를 중지하고 관리자 파일을 제거한 다음 Mongo를 시작해야합니다.

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
이것은 관리 사용자 데이터베이스를 파괴하고 "localHostExcetption"을 통한 액세스를 허용하므로 문제가있을 때 사용자를 관리하는 좋은 방법이 아닙니다.
daveh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.