Cómo iniciar el demonio Mongo con soporte de autenticación

Cómo iniciar el demonio Mongo con soporte de autenticación

Quiero iniciar el demonio MongoDB con soporte de autenticación usando el script de inicio de Mongo:

sudo /etc/init.d/mongod start

También agregué usuarios de base de datos a la base de datos para autenticarse. Estoy trabajando con dos archivos: /etc/init.d/mongod(para init) y /etc/mongod.conf(para config).

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

El método que no es demonio inicia correctamente el proceso con la --authbandera:

mongod --auth

La bifurcación funciona, pero no utiliza el script de inicio:

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

Lea toda la documentación y publicaciones relacionadas, nadie parecía tener una solución funcional para obtener soporte de autenticación.

service mongod start

Enlaces:

Actualización: reinstalé Debian/Mongo y pude usarlo service mongod starten auth = trueel archivo conf. Probablemente rompí algo durante mi instalación/configuración inicial.

Respuesta1

Acabo de probar esto con una instalación nueva de Debian 7 y una instalación nueva de MongoDB. Primero agregué un usuario (adam), luego edité el /etc/mongod.confarchivo para descomentar la auth = truelínea. Luego emití el service mongod restartcomando e intenté iniciar sesión como usuario, y lo logré; también probé con credenciales incorrectas y fallé. Por lo tanto, la autenticación parece funcionar bien, no hubo problemas obvios al usar el archivo de configuración para especificar que la autenticación está habilitada.

Entonces, un par de preguntas:

  • ¿Cómo estás probando que la autenticación esté habilitada?
  • ¿Quizás tenga más de una línea en su archivo de configuración que contenga declaraciones de autenticación/noauth?

Como referencia, aquí está la mayoría de mis pruebas con los comentarios del shell, etc.

Primero, la instalación y configuración del usuario inicial:

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"
        }
    ]
}

A continuación, edité el /etc/mongod.confarchivo y eliminé el #comentario auth = true(no hice otros cambios). Guardé ese archivo y luego reinicié el servicio. Luego me conecté con el usuario que había agregado y verifiqué que tenía los privilegios correctos:

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" }

Como puede ver, el usuario que agregué no tiene los privilegios para ver las advertencias de inicio, pero para estar seguro, verifiqué los privilegios:

> 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
}                                        

Para completar, aquí hay un error de autenticación:

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   

Respuesta2

Edite /etc/mongod.conf y agregue una línea como esta:

Para mongo <3,0

auth=true

Entonces:

service mongod restart

Para mongo 3.x, agregue esto a la configuración

security:
  authorization: "enabled"

Respuesta3

Esto funcionó para mí (usando mongo 3.2): edite /etc/mongod.conf y agregue:

seguridad: autorización: habilitada

Similar a la otra respuesta, pero sin las comillas "habilitado"

información relacionada