gpt4 book ai didi

mongodb - 如何向 mongodb 中的用户提供诊断操作 listDatabases?

转载 作者:可可西里 更新时间:2023-11-01 09:20:17 26 4
gpt4 key购买 nike

我正在尝试从 java 应用程序连接到 openshift 中的 mongodb 数据库,但我在允许的角色和操作方面遇到了一些问题。

我像这样运行 rch port-forward 命令:

rhc port-forward -a test

一切顺利,我可以使用以下方式连接到数据库:

mongo admin -u admin -p '*******' --host 127.0.0.1 --port 44506

我可以执行如下命令:

> use test
> show databases

但是如果我使用以下方法直接连接到我的数据库:

mongo test -u admin -p '*******' --host 127.0.0.1 --port 44506

我无法运行显示数据库命令

listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:47

我怎样才能在这个数据库中给这个用户一个 action listDatabases?

我在 mongodb 文档中找到了这个页面 http://docs.mongodb.org/manual/reference/privilege-actions/#security-user-actions其中讨论了诊断操作,但没有提及如何向用户提供此类操作。

感谢您的帮助。

最佳答案

正如 wdberkeley 所提到的,您必须在 admin 数据库中拥有一个能够列出数据库的用户。

为此,您首先必须为此用户创建一个非常小的“角色”,允许他们列出数据库,然后创建一个同时具有此角色和读写其他数据库的角色的用户:

use admin

db.runCommand({ createRole: "listDatabases",
privileges: [
{ resource: { cluster : true }, actions: ["listDatabases"]}
],
roles: []
})

db.createUser({
user: "<userName>",
pwd: "<passwd>",
roles: [
{ role: "readWrite", db: "test" },
{ role: "listDatabases", db: "admin" }
]
})

MongoDB 文档对 createRole 都有引用和 createUser ,如果您想了解有关这些命令的更多信息。

关于mongodb - 如何向 mongodb 中的用户提供诊断操作 listDatabases?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28348208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com