我使用身份validation运行MongoDB。 我想要一个非root客户端来获得服务器时间。
我认为最简单的就是使用serverStatus 。 但是默认的readWrite用户没有这样的权限。
我真的迷失在mongo安全模式中。 我尝试添加一个像这样的serverStatusangular色:
db.createRole( { role: "serverStatus", privileges: [ { resource: { db: "admin", collection: ""}, actions: [ "serverStatus" ] } ], roles: [], writeConcern: { w: "majority" , wtimeout: 5000 } } )
然后添加到用户:
db.grantRolesToUser( "myuser", [ { role: "serverStatus", db: "admin" } ] )
但试图得到serverStatus我得到:
> db.serverStatus() { "ok" : 0, "errmsg" : "not authorized on admin to execute command { serverStatus: 1.0 }", "code" : 13 }
有什么build议吗?
我已经运行了。 我错过了将serverStatus操作授予群集资源的点(请参阅cluster: true ):
use admin db.createRole( { role: "serverStatus", privileges: [ { resource: { cluster: true }, actions: [ "serverStatus" ] } ], roles: [], writeConcern: { w: "majority" , wtimeout: 5000 } } )
在grantRolesToUser之前grantRolesToUser应该发出use mydb来避免在另一个数据库中创build一个用户。