作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试从 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/
我是一名优秀的程序员,十分优秀!