【发布时间】:2021-07-10 19:25:20
【问题描述】:
我正在尝试找出 MongoDB 4.0 中的哪个内置角色可以执行以下查询:
Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'not authorized on config to execute command { find: "system.sessions", filter: {}, $db: "config", $clusterTime: { clusterTime: Timestamp(1625944650, 1), signature: { hash: BinData(0, 5B0A62A5164EB17E7C0A1EB182AE1B9B44FC8DEF), keyId: 6983378611524861955 } }, lsid: { id: UUID("814ada4e-e25d-4598-89a5-197c9962eb50") }, $readPreference: { mode: "primaryPreferred" } }' on server localhost:27017
我尝试了以下方法:
db.createUser(
{user: "order", pwd: "xxxx",
roles: [
{role: "root", db: "admin"},
{role: "clusterManager", db: "admin"},
{role: "clusterMonitor", db: "admin"}]
});
但是,我很确定我使用了错误的角色(或者完全遗漏了其他东西)。
编辑** 回答以下问题:
我以刚刚在上面创建的用户身份运行查询。我还尝试使用内置的 root 帐户(我对 Mongo 很陌生,所以我还在学习)。
文档将 clusterManager 称为角色内置的“listSessions”操作。
我正在使用 CDC 库 - Debezium,因此它会自动对会话集合进行查询。
【问题讨论】:
-
您以什么用户身份运行此查询?该错误表明您试图在没有所需权限的情况下将用户添加到数据库。
-
您不需要在 role
root上授予 clusterManager 或 clusterMonitor - 它已经包含在内。 -
您可能不需要在会话集合上找到权限,有一个单独的命令:$listSessions
-
我以刚刚在上面创建的用户身份运行查询。我还尝试使用内置的 root 帐户(我对 Mongo 很陌生,所以我还在学习)。文档将 clusterManager 称为角色内置的“listSessions”操作。我正在使用 CDC 库 - Debezium,因此它会自动对会话集合进行查询。