[mongodb] MongoDB-관리자 권한이 없습니다

MongoDB에 권한을 추가하려고합니다.
MongoDB 2.6.1을 사용하여 Linux 에서이 모든 작업을 수행하고 있습니다.
내 mongod.conf 파일은 이전 호환성 형식입니다
(설치와 함께 제공되는 방식).

1) 여기 (3)에 설명 된대로 관리자를 만들었습니다.

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) 그런 다음이 줄의 주석을 해제하여 mongod.conf를 편집했습니다.

auth = true

3) 마지막으로 mongod 서비스를 재부팅하고 로그인을 시도했습니다.

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) 연결할 수는 있지만 연결시 이것을 말합니다.

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) 이제 sa내가 만든 이 사용자에게는 권한이없는 것 같습니다 .

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

무엇이 문제입니까? 이 전체 절차를 3 번 ​​반복
했으며 MongoDB 문서에 지정된대로 모두 수행했다고 생각합니다. 그러나 작동하지 않습니다.
sa사용자 는
다른 사용자를 생성하고보다 구체적인 권한을 부여 할 수 있도록 모든 작업을 수행 할 권한이 있어야합니다 .



답변

또한 같은 문제에 대해 머리를 긁고 있었고 첫 번째 관리자를 추가 할 때 역할을 루트로 설정 한 후에 모든 것이 작동했습니다.

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

이미 admin사용자를 만든 경우 다음 과 같이 역할을 변경할 수 있습니다.

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

전체 인증 설정 참조 는 인터넷을 통해 몇 시간 동안 조사한 후 컴파일 한 단계를 참조하십시오 .


답변

약간 혼란 스럽습니다. 데이터베이스를 쿼리하려면 readWrite를 부여해야한다고 생각합니다. dbadmin 또는 useradmin 사용자는 데이터베이스를 관리 할 수 ​​있지만 (추가 권한 부여 포함) 쿼리를 수행하거나 데이터를 쓸 수는 없습니다.

그래서 당신에게 readWrite를 부여하면 괜찮을 것입니다-

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite


답변

현재 사용자를 변경하는 방법에 대한 간단한 예가 누군가에게 도움이 될 것입니다. 이것이 내가 실제로 찾던 것입니다.

@JohnPetrone의 조언에 따라 grantRolesToUser 를 사용하여 관리자에게 readWrite 역할을 추가 했습니다.

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version


답변

–authenticationDatabase 플래그를 사용하면 도움이됩니다.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"


답변

이 답변 이이 스레드에서 실제로 늦어지고 있음을 알고 있지만 확인하시기 바랍니다.

이 오류가 발생하는 이유는 지금까지 수집 한 사용자에게 부여한 특정 역할을 기반으로하며, 해당 사용자에게 역할을 부여하면 root문제를 해결할 수 있지만 이러한 역할을 부여하기 전에 먼저 해당 역할이 수행하는 작업을 이해해야합니다. 사용자에게.

학습서에서는 userAdminAnyDatabase기본적으로 모든 데이터베이스의 사용자를 관리 할 수있는 역할을 사용자에게 부여했습니다 . 사용자와 관련하여 수행하려는 작업이 역할 정의를 벗어났습니다.

root역할은 정의뿐만 아니라 같은에 포함이 역할을 가지고 readWriteAnyDatabase, dbAdminAnyDatabase그것을 슈퍼 유저를 만들고 다른 역할을 (기본적으로 당신이 그것으로 아무것도 할 수 있기 때문에).

역할 정의를 확인하여 특정 작업을 완료하기 위해 사용자에게 어떤 역할을 부여해야하는지 확인할 수 있습니다.
https://docs.mongodb.com/manual/reference/built-in-roles/
모든 사용자를 슈퍼 사용자로 만드는 것은 좋지 않습니다. 🙂


답변

간단한 질문입니다.

  1. 대상 db NOT admin을 전환해야합니다 .

yourDB를 사용하십시오

  1. 로 DB 인증을 확인하십시오.

사용자에게 표시

  1. 질문 인 {} 빈 오브젝트를 얻는 경우. 당신은 입력해야합니다

db.createUser ({사용자 : “yourUser”, 암호 : “password”, 역할 : [ “readWrite”, “dbAdmin”]})

또는

db.grantRolesToUser ( ‘yourUser’, [{역할 : “dbAdmin”, db : “yourDB”}])


답변

Windows 환경에서 비슷한 문제가 발생했습니다. Bitnami DreamFactory를 설치했으며 시스템 부팅시 시작된 다른 MongoDb도 설치합니다. MongoDbService (오류없이 시작됨)를 실행하고 있었지만 실제로 Bitnami의 MongoDb 서비스에 연결되어 있다는 시간을 많이 잃어버린 것을 알았습니다. 서버에서 다른 mongoDB 인스턴스가 실행되고 있지 않은지 살펴보십시오.

행운을 빕니다!