Mongodb

如何獲取 MongoDB 伺服器本地時間?

  • October 28, 2014

我正在執行一個帶有身份驗證的 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):

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

同樣在grantRolesToUser發出之前,應該use mydb避免在另一個數據庫中創建使用者。

引用自:https://serverfault.com/questions/640283