MongoBD查询数据的时候有一个报错

not authorized for query

最后发现是用户权限的问题

内置角色:

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root

检查当前用户

use admin;

db.auth('root', '123456')

db.getUsers();
[
    {
        "_id" : "admin.root",
        "userId" : UUID("d3703a16-3066-43de-8ed2-07aed8608281"),
        "user" : "root",
        "db" : "admin",
        "roles" : [
            {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            }
        ],
        "mechanisms" : [
            "SCRAM-SHA-1",
            "SCRAM-SHA-256"
        ]
    }
]

发现他的权限只是"role" : "userAdminAnyDatabase"

userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限,不能用作备份。

所以,需要新增一个用户,赋予数据查询修改的权限

db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})

或者增加原有账号的权限

参考文章

  • MongoDB角色、权限介绍