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角色、权限介绍