在 Mongo Shell 中列出所有用户
在这篇 MongoDB 文章中,您将了解如何对用户进行身份验证、在 Mongo shell 中列出所有用户,以及使用 db.getUser()
和 db getUsers()
方法。
验证用户
要作为用户进行身份验证,用户必须提供用户名、密码以及与该用户关联的身份验证数据库。 因此,无法在同一个mongosh session中进行用户之间的切换。
作为不同的用户进行身份验证意味着该会话具有两个经过身份验证的用户的特权。 您可以退出并重新启动 mongosh 以在用户之间切换。
使用 mongosh,您可以在连接期间进行身份验证或在连接后进行身份验证。
在连接期间进行身份验证
使用 -u、-p 和 --authenticationDatabase 命令行选项启动 mongosh。
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myUserAdmin" -p
出现提示时输入密码。
连接后验证
使用 mongosh 连接到 mongod 或 mongos 实例。
mongosh --port 27017
在 mongosh 中,切换到身份验证数据库(在本例中为 admin),并使用 db.auth(,)
方法或 authenticate 命令对身份验证数据库进行身份验证。
use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
passwordPrompt() 方法提示用户输入密码。 用户还可以直接将其密码指定为字符串。
建议您使用 passwordPrompt() 方法以避免密码在您的屏幕上可见并可能将密码泄露到您的 shell 历史记录中。 相反,请在出现提示时输入密码。
在 Mongo Shell 中列出所有用户
要列出所有用户,您可以使用 mongosh 查询 system.users 集合。
use admin
db.system.users.find()
您不能直接修改 system.users 集合。 要对用户进行管理,可以使用指定的用户管理命令。
例如,要列出通过 mongos 创建的分片集群的所有用户,请连接到 mongos 并运行下一个命令。 MongoDB 将通过 mongos 创建的用户存储在配置服务器的管理数据库中。
要列出所有分片,本地用户可以直接连接到相应的分片并运行下一个命令。 MongoDB 用于将分片本地用户存储在分片本身的管理数据库中。
这些分片本地用户独立于通过 mongos 添加到分片集群的用户。 分片本地用户仅限于分片,对 mongos 不可用。
MongoDB 中的 db.getUser() 方法
此方法具有以下语法。
db.getUser(username, args)
此方法将返回指定用户的用户信息。 用户可以在用户的数据库上运行这个方法。
您必须存在于运行该方法的数据库中。 db.getUser()
方法由以下参数组成。
db.getUser( "<username>", {
showCredentials: <Boolean>,
showPrivileges: <Boolean>,
showAuthenticationRestrictions: <Boolean>,
filter: <document>
} )
参数 | 类型 | 描述 |
---|---|---|
username | string | 要为其检索信息的用户名。 |
args | document | 可选的。 指定附加参数的文档。 |
args 文档支持以下字段。
字段 | 类型 | 描述 |
---|---|---|
showCredentials | Boolean | 这是个可选的选项。 将此字段设置为 true 以显示用户的密码哈希。 默认情况下,此字段为 false。 |
showPrivileges | Boolean | 这是个可选的选项。 将此字段设置为 true 以查看用户的全部权限,包括扩展信息。 默认情况下,此字段为 false。 如果查看所有用户,则不能指定这个 |
showAuthenticationRestrictions | Boolean | 这是个可选的选项。 将此字段设置为 true 以显示用户的身份验证限制。 默认情况下,此字段为 false。 如果查看所有用户,则不能指定此字段。 |
filter | document | 这是个可选的选项。 本文档指定 $match 阶段条件,为匹配过滤条件的用户返回信息。 |
db.getUser()
方法包含在 usersInfo 命令中。
用户必须对其他用户的数据库执行 viewUser 操作才能查看其他用户的信息。 用户可以访问他们的数据。
例子:
以下操作将返回有关帐户数据库中示例 appClient 用户的信息。
use accounts
db.getUser("appClient")
上面示例的输出如下所示。
{
_id: 'accounts.appClient',
userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
user: 'appClient',
db: 'accounts',
roles: [],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
MongoDB 中的 db.getUsers() 方法
此方法具有以下语法。
db.getUsers(<options>)
此方法将返回数据库中所有用户的信息。 db.getUsers()
方法包含在 usersInfo: 1 命令中。
db.getUsers()
方法采用以下选项。
db.getUsers( {
showCredentials: <Boolean>,
filter: <document>
} )
字段 | 类型 | 描述 |
---|---|---|
showCredentials | Boolean | 这是个可选的选项。 您可以将该字段设置为 true 以显示用户的密码哈希。 默认情况下,此字段为 false。 |
filter | document | 这是个可选的选项。 本文档指定 $match 阶段条件,为匹配过滤条件的用户返回信息。 |
用户必须对其他用户的数据库执行 viewUser 操作才能查看其他用户的信息。 用户可以查看他们的信息。
例子:
查看与指定过滤器匹配的给定数据库的所有用户。
db.getUsers()
方法可以接受一个过滤文档,返回符合过滤条件的用户信息。 查看当前数据库中拥有 SCRAM-SHA-256 凭据的所有用户。
db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })
查看所有用户时,您可以指定 showCredentials 选项,但不能指定 showPrivileges 或 showAuthenticationRestrictions 选项。
因此,借助这篇 MongoDB 文章,您了解了如何对用户进行身份验证、在 Mongo shell 中列出所有用户以及使用 db.getUser()
和 db.getUsers()
方法。
相关文章
在 MongoDB Shell 中列出所有数据库
发布时间:2023/05/11 浏览次数:180 分类:MongoDB
-
交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。
MongoDB 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:1024 分类:MongoDB
-
这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 MongoDB 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:214 分类:MongoDB
-
在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 MongoDB
发布时间:2023/05/11 浏览次数:745 分类:MongoDB
-
要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便
在 MongoDB 中存储日期和时间
发布时间:2023/05/11 浏览次数:762 分类:MongoDB
-
本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。
MongoDB 按 ID 查找
发布时间:2023/05/11 浏览次数:1856 分类:MongoDB
-
MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。
检查 MongoDB 服务器是否正在运行
发布时间:2023/05/11 浏览次数:247 分类:MongoDB
-
这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。
MongoDB 中的分页
发布时间:2023/05/11 浏览次数:174 分类:MongoDB
-
这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。
MongoDB 从查询开始
发布时间:2023/05/11 浏览次数:186 分类:MongoDB
-
在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。