인증 지원으로 Mongo 데몬을 시작하는 방법

인증 지원으로 Mongo 데몬을 시작하는 방법

Mongo init 스크립트를 사용하여 인증 지원으로 MongoDB 데몬을 시작하고 싶습니다.

sudo /etc/init.d/mongod start

또한 인증을 위해 데이터베이스에 db 사용자를 추가했습니다. 저는 /etc/init.d/mongod(init용)과 /etc/mongod.conf(config용)이라는 두 개의 파일로 작업하고 있습니다.

#mongod.conf:
dbpath=/var/lib/mongodb
logappend=true
port = 27017 
auth = true

데몬이 아닌 메소드는 다음 플래그 를 사용하여 프로세스를 올바르게 시작합니다 --auth.

mongod --auth

포크는 작동하지만 초기화 스크립트를 사용하지 않습니다.

mongod --fork --auth --logpath /var/log/mongod.log

모든 문서와 관련 게시물을 읽어보세요. 인증 지원을 받을 수 있는 효과적인 솔루션을 가진 사람은 아무도 없는 것 같았습니다.

service mongod start

연결:

업데이트: Debian/Mongo를 다시 설치했고 conf 파일에서 service mongod start사용할 수 있었습니다. auth = true초기 설치/구성 중에 문제가 발생한 것 같습니다.

답변1

방금 Debian 7을 새로 설치하고 MongoDB를 새로 설치하여 이것을 테스트했습니다. 먼저 사용자(adam)를 추가한 다음 파일을 편집하여 /etc/mongod.conf해당 줄의 주석 처리를 제거 했습니다 auth = true. 그런 다음 명령을 실행 service mongod restart하고 사용자로 로그인을 시도했으며 성공했습니다. 또한 잘못된 자격 증명을 시도했지만 실패했습니다. 따라서 인증이 제대로 작동하는 것 같습니다. 인증이 활성화되도록 지정하기 위해 구성 파일을 사용하는 데 명백한 문제는 없었습니다.

따라서 몇 가지 질문이 있습니다.

  • 인증이 활성화되었는지 어떻게 테스트하고 있나요?
  • auth/noauth 문이 포함된 구성 파일에 두 개 이상의 줄이 있습니까?

참고로 쉘 등의 피드백을 사용한 대부분의 테스트는 다음과 같습니다.

먼저 초기 사용자를 설치하고 설정합니다.

root@deb7:~# apt-get install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
  mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell
  mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded.
Need to get 114 MB of archives.
After this operation, 287 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
** SNIP  for brevity** 
Setting up mongodb-org-shell (2.6.1) ...
Setting up mongodb-org-server (2.6.1) ...
Adding system user `mongodb' (UID 104) ...
Adding new user `mongodb' (UID 104) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 107) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
[ ok ] Starting database: mongod.
Setting up mongodb-org-mongos (2.6.1) ...
Setting up mongodb-org-tools (2.6.1) ...
Setting up mongodb-org (2.6.1) ...
root@deb7:~# mongo
MongoDB shell version: 2.6.1
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "adam",
...     pwd: "password123",
...     roles:
...     [
...       {
...         role: "userAdminAnyDatabase",
...         db: "admin"
...       }
...     ]
...   }
... )                           
Successfully added user: {
    "user" : "adam",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

다음으로 파일을 편집 하고 주석 처리된 /etc/mongod.conf파일을 제거했습니다 (다른 변경 사항은 적용하지 않았습니다). 해당 파일을 저장한 다음 서비스를 다시 시작했습니다. 다음으로 내가 추가한 사용자에게 연결하여 올바른 프로필이 있는지 확인했습니다.#auth = true

root@deb7:~# vim /etc/mongod.conf 
root@deb7:~# service mongod restart
[ ok ] Restarting database: mongod.
root@deb7:~# mongo -u adam -p password123 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

보시다시피, 제가 추가한 사용자에게는 시작 경고를 볼 수 있는 권한이 없지만 확실히 하기 위해 권한을 확인했습니다.

> use admin
switched to db admin
> db.runCommand(   {     usersInfo:"adam",     showPrivileges:true   } )
{
    "users" : [
        {
            "_id" : "admin.adam",
            "user" : "adam",
            "db" : "admin",
            "roles" : [
                {
                    "role" : "userAdminAnyDatabase",
                    "db" : "admin"
                }
            ],
            "inheritedRoles" : [
                {
                    "role" : "userAdminAnyDatabase",
                    "db" : "admin"
                }
            ],
            "inheritedPrivileges" : [
                {
                    "resource" : {
                        "db" : "",
                        "collection" : ""
                    },
                    "actions" : [
                        "changeCustomData",
                        "changePassword",
                        "createRole",
                        "createUser",
                        "dropRole",
                        "dropUser",
                        "grantRole",
                        "revokeRole",
                        "viewRole",
                        "viewUser"
                    ]
                },
                {
                    "resource" : {
                        "cluster" : true
                    },
                    "actions" : [
                        "authSchemaUpgrade",
                        "invalidateUserCache",
                        "listDatabases"
                    ]
                },
                {
                    "resource" : {
                        "db" : "",
                        "collection" : "system.users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.roles"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.version"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.new_users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.backup_users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                }
            ]
        }
    ],
    "ok" : 1
}                                        

완전성을 위해 다음은 인증 실패입니다.

root@deb7:~# mongo -u root -p 12345678 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
2014-05-11T18:04:39.793+0100 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed   

답변2

/etc/mongod.conf를 편집하고 다음과 같은 줄을 추가합니다.

몽고 <3.0의 경우

auth=true

그 다음에:

service mongod restart

mongo 3.x의 경우 이를 구성에 추가하세요.

security:
  authorization: "enabled"

답변3

이것은 나에게 효과적이었습니다 (mongo 3.2 사용). /etc/mongod.conf를 편집하고 다음을 추가하십시오.

보안: 인증: 활성화됨

다른 답변과 유사하지만 "활성화됨" 주위에 따옴표가 없습니다.

관련 정보