sql >> Database teknologi >  >> NoSQL >> MongoDB

show dbs giver ikke autoriseret til at udføre kommandofejl

Du skulle have startet mongod-instansen med adgangskontrol, dvs. kommandolinjeindstillingen --auth, såsom:

$ mongod --auth

Lad os starte mongo-skallen og oprette en administrator i admin-databasen:

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

Hvis du nu kører kommandoen "db.stats()" eller "vis brugere", vil du få fejlmeddelelsen "ikke autoriseret på admin til at udføre kommando..."

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

Årsagen er, at du stadig ikke har givet rollen "read" eller "readWrite" til brugeren myUserAdmin. Du kan gøre det som nedenfor:

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

Nu kan du bekræfte det (Kommando "vis brugere" virker nu):

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

Hvis du nu kører "db.stats()", vil du også være OK:

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

Denne bruger- og rollemekanisme kan også anvendes på alle andre databaser i MongoDB ud over admindatabasen.

(MongoDB version 3.4.3)



  1. Node.js multi-server klynge:hvordan man deler objekt i flere node klynge

  2. tæl array-forekomster på tværs af alle dokumenter med mongo

  3. Mongodb Deltag på _id felt fra String til ObjectId

  4. Sammenligning af memcache, redis og ehcache som distribueret cachingramme