Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MongoDB中获取当前帐户的授权数据库列表_Mongodb - Fatal编程技术网

如何在MongoDB中获取当前帐户的授权数据库列表

如何在MongoDB中获取当前帐户的授权数据库列表,mongodb,Mongodb,我正在使用非管理员帐户访问Mongo实例。而且我使用的帐户无权运行show dbs命令。而且该帐户也没有访问admin数据库的权限。见以下输出: show dbs 2017-02-08T15:40:54.651+1100 E QUERY [main] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1

我正在使用非管理员帐户访问Mongo实例。而且我使用的帐户无权运行
show dbs
命令。而且该帐户也没有访问
admin
数据库的权限。见以下输出:

show dbs
2017-02-08T15:40:54.651+1100 E QUERY    [main] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13,
    "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:755:19
shellHelper@src/mongo/shell/utils.js:645:15
@(shellhelp2):1:1

我不知道如何获取该帐户可以访问的数据库列表。我知道我可以使用管理员帐户获取所有角色信息。但我没有管理员帐户密码。我只有这个帐户凭证。在这种情况下,如何为特定帐户执行此操作?

在MongoDB 3.4中,经过身份验证的用户如果没有具有管理员权限的角色,则无法查看可访问数据库的完整(或部分)列表

如果您有权访问部署的管理帐户(或者可以向有权限的人提出请求),一个选项是创建一个仅授予此权限的帐户。但是,这确实允许在共享系统中公开一些潜在的信息,因为
listDatabases
输出当前包括所有数据库名称及其在磁盘上的大小

例如,要创建一个用户
bobbytables
,该用户可以列出所有数据库,但只能对
webscale
xkcd
数据库进行读/写访问:

use admin
db.createUser({
    user: "bobbytables",
    pwd:  "drop;mic",
    roles: [
        { role: "readWrite", db: "webscale" },
        { role: "readWrite", db: "xkcd" }
    ]
})
db.createRole({
    role: "listDatabases",
    privileges: [
        { resource: { cluster: true }, actions: [ "listDatabases" ] }
    ],
    roles: []
})
db.grantRolesToUser("bobbytables", ["listDatabases"])

MongoDB问题跟踪器中存在一个相关的开放功能请求以进行监视/投票:。建议的更改是允许所有用户运行
listDatabases
,但将结果列表筛选到当前用户具有读写权限的数据库。

在MongoDB 3.4中,经过身份验证的用户不可能查看完整(或部分)列表没有具有管理员权限的角色的可访问数据库列表

如果您有权访问部署的管理帐户(或者可以向有权限的人提出请求),一个选项是创建一个仅授予此权限的帐户。但是,这确实允许在共享系统中公开一些潜在的信息,因为
listDatabases
输出当前包括所有数据库名称及其在磁盘上的大小

例如,要创建一个用户
bobbytables
,该用户可以列出所有数据库,但只能对
webscale
xkcd
数据库进行读/写访问:

use admin
db.createUser({
    user: "bobbytables",
    pwd:  "drop;mic",
    roles: [
        { role: "readWrite", db: "webscale" },
        { role: "readWrite", db: "xkcd" }
    ]
})
db.createRole({
    role: "listDatabases",
    privileges: [
        { resource: { cluster: true }, actions: [ "listDatabases" ] }
    ],
    roles: []
})
db.grantRolesToUser("bobbytables", ["listDatabases"])
MongoDB问题跟踪器中存在一个相关的开放功能请求以进行监视/投票:。建议的更改是允许所有用户运行
listDatabases
,但将结果列表筛选到当前用户具有读写权限的数据库