如何获取MongoDB服务器本地时间?

如何获取MongoDB服务器本地时间?

我正在运行带有身份验证的 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
}

请问有什么建议吗?

答案1

我已经让它运行了。我错过了serverStatus应该向集群资源授予操作的要点,例如(参见cluster: true):

use admin
db.createRole(   
  {     
    role: "serverStatus",     
    privileges:     [       
      { 
        resource: { cluster: true }, 
        actions: [ "serverStatus" ] 
      }     
    ],
    roles: [],   
    writeConcern: { w: "majority" , wtimeout: 5000 }   
  }
)

此外,在grantRolesToUser发出之前还应use mydb避免在另一个数据库中创建用户。

相关内容