我正在运行一个带有身份验证的 mongodb。我想要一个非 root 客户端来获取服务器时间。
我认为最简单的方法是使用serverStatus
. 但默认的 readWrite 用户没有这样的权限。
我真的迷失在 mongo 安全模型中。我尝试添加这样的serverStatus
角色:
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
}
请问有什么建议吗?
我已经让它运行起来了。我错过了
serverStatus
应该向集群资源授予操作的要点,例如(请参阅 参考资料cluster: true
):同样在
grantRolesToUser
发出之前,应该use mydb
避免在另一个数据库中创建用户。