db.serverStatus()命名执行时报无权限问题的解决方法
1、问题描述
今天在执行db.serverStatus()命令时给出了“"errmsg":"notauthorizedonadmintoexecutecommand{serverStatus:1.0}",”的错误提示。
通过查询admin的权限已经是dbOwner的权限了,然后又陆续赋予了dbadmin等权限,问题仍旧存在。
最后找到了Mongodb的权限列表,赋予了root权限终于可以把问题给解决了,然后又测试了其他几个权限都不可以,这说明db.serverStatus是服务器级别的命令,需要mongodb的最高权限才能执行。
下面是问题处理的简单流程,分享给大家,以供参考。
2、错误内容
[root@ggnode2~]#mongo10.130.170.112:27017/admin-uadmin-p
MongoDBshellversion:3.2.8
Enterpassword:
connectingto:10.130.170.112:27017/admin
MongoDBEnterprise>
MongoDBEnterprise>db.serverStatus()
{
"ok":0,
"errmsg":"notauthorizedonadmintoexecutecommand{serverStatus:1.0}",
"code":13
}
3、错误分析
从得到的错误内容可知,是由于admin没有执行db.serverStatus()命令的权限。
MongoDBEnterprise>useadmin
switchedtodbadmin
MongoDBEnterprise>showcollections
system.users
system.version
MongoDBEnterprise>db.system.users.find()
{"_id":"admin.admin","user":"admin","db":"admin","credentials":{"SCRAM-SHA-1":{"iterationCount":10000,"salt":"BEN7SONYkewFMx3f67FNQw==","storedKey":"HjlvcjSpXpSKetcUbJyj350Xgjk=","serverKey":"k2WEf2cHGgg9n3tyEMJyuKaRt3U="}},"roles":[{"role":"dbOwner","db":"admin"}]}
根据查询结果可知,admin拥有dbOwner角色权限,而执行db.serverStatus()命令需要root角色权限。
4、问题处理:
经过查询表system.users表可知,需要为admin用户赋予root角色才能执行db.serverStatus()命令。
赋予角色权限的操作命令如下:
#授予角色权限
MongoDBEnterprise>db.grantRolesToUser("admin",[{role:"root",db:"admin"}])
MongoDBEnterprise>
#取消角色权限
MongoDBEnterprise>db.revokeRolesFromUser("admin",[{role:"root",db:"admin"}]
MongoDBEnterprise>
5、问题解决
赋予root角色权限之后,再执行db.serverStatus()命令就OK了,执行结果如下:
MongoDBEnterprise>db.serverStatus()
MongoDBshellversion:3.2.8
connectingto:10.130.170.112:27017/admin
{
"host":"ggnode2",
"advisoryHostFQDNs":[],
"version":"3.2.8",
"process":"mongod",
"pid":NumberLong(23155),
"uptime":1470624,
"uptimeMillis":NumberLong(1470624043),
"uptimeEstimate":1415522,
"localTime":ISODate("2016-11-07T04:13:33.328Z"),
"asserts":{
"regular":0,
"warning":0,
"msg":0,
"user":62,
"rollovers":0
},
"connections":{
"current":1,
"available":818,
"totalCreated":NumberLong(6025)
},
"extra_info":{
"note":"fieldsvarybyplatform",
"heap_usage_bytes":60437840,
"page_faults":28
},
"globalLock":{
"totalTime":NumberLong("1470624234000"),
"currentQueue":{
"total":0,
"readers":0,
"writers":0
},
"activeClients":{
"total":8,
"readers":0,
"writers":0
}
},
"locks":{
……
"storage":{
"freelist":{
"search":{
"bucketExhausted":NumberLong(0),
"requests":NumberLong(0),
"scanned":NumberLong(0)
}
}
},
"ttl":{
"deletedDocuments":NumberLong(0),
"passes":NumberLong(24508)
}
},
"ok":1
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。