sql >> Base de Datos >  >> NoSQL >> MongoDB

show dbs da No autorizado para ejecutar el error de comando

Debería haber iniciado la instancia de mongod con control de acceso, es decir, la opción de línea de comando --auth, como:

$ mongod --auth

Iniciemos el shell mongo y creemos un administrador en la base de datos de administración:

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

Ahora, si ejecuta el comando "db.stats()" o "mostrar usuarios", obtendrá el error "no autorizado por el administrador para ejecutar el comando..."

> db.stats()
{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { dbstats: 1.0, scale: undefined }",
        "code" : 13,
        "codeName" : "Unauthorized"
}

El motivo es que aún no ha otorgado el rol "lectura" o "lecturaEscritura" al usuario myUserAdmin. Puede hacerlo de la siguiente manera:

> db.auth("myUserAdmin", "abc123")
> db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])

Ahora puede verificarlo (el comando "mostrar usuarios" ahora funciona):

> show users
{
        "_id" : "admin.myUserAdmin",
        "user" : "myUserAdmin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "read",
                        "db" : "admin"
                },
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

Ahora, si ejecuta "db.stats()", también estará bien:

> db.stats()
{
        "db" : "admin",
        "collections" : 2,
        "views" : 0,
        "objects" : 3,
        "avgObjSize" : 151,
        "dataSize" : 453,
        "storageSize" : 65536,
        "numExtents" : 0,
        "indexes" : 3,
        "indexSize" : 81920,
        "ok" : 1
}

Este mecanismo de usuario y rol también se puede aplicar a cualquier otra base de datos en MongoDB, además de la base de datos de administración.

(MongoDB versión 3.4.3)