MongoBD查询数据的时候有一个报错
not authorized for query
最后发现是用户权限的问题
内置角色:
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色: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角色、权限介绍