迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 Mongo Shell 中列出所有用户

作者:迹忆客 最近更新:2023/05/07 浏览次数:

在这篇 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 选项,但不能指定 showPrivilegesshowAuthenticationRestrictions 选项。

因此,借助这篇 MongoDB 文章,您了解了如何对用户进行身份验证、在 Mongo shell 中列出所有用户以及使用 db.getUser()db.getUsers() 方法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MongoDB 中的 $unset 运算符

发布时间:2023/05/10 浏览次数:135 分类:MongoDB

本文将讨论 $unset 运算符在 MongoDB 中的工作原理。 此外,我们将演示使用此运算符从 MongoDB 集合中的所有文档中删除一个字段。MongoDB 中的 $unset 运算符 $unset 是用于从实体中删除字段的运算符。

MongoDB 中的 $ne 运算符

发布时间:2023/05/10 浏览次数:82 分类:MongoDB

本文将讨论 $ne 运算符如何在 MongoDB 中工作。 另外,我们会列举它与$not操作符的区别。MongoDB 中的 $ne 运算符 $ne 是MongoDB中的一个运算符,代表不等于。

MongoDB $Set 运算符

发布时间:2023/05/10 浏览次数:54 分类:MongoDB

在本文中,我们将学习如何使用 $set 运算符部分更新 MongoDB 中的对象,以便新对象与现有对象重叠/合并。

MongoDB 中 $push 和 $addToSet 的区别

发布时间:2023/05/10 浏览次数:103 分类:MongoDB

这篇指导文章将告诉您什么是 MongoDB 中的运算符以及它们是如何描述的。 此外,对 $push 和 $addToSet 运算符进行了简要的详细说明。 $push 和 $addToSet 之间的区别通过代码段详细说明。

在 MongoDB 中按日期对集合进行排序

发布时间:2023/05/10 浏览次数:150 分类:MongoDB

在本 MongoDB 教程中,讨论了在 MongoDB 中对集合进行排序的问题。 简要说明了对数据库中的集合进行排序的不同方法。在 MongoDB 中使用 sort() 函数

统计 MongoDB 中的记录

发布时间:2023/05/10 浏览次数:83 分类:MongoDB

本文讨论 MongoDB 中的运算符、聚合运算符以及计算总记录数的不同方法。MongoDB 中的操作 CRUD 操作是用户界面的概念,允许用户浏览、搜索和更改数据库中的对象。

MongoDB 中的漂亮打印

发布时间:2023/05/10 浏览次数:199 分类:MongoDB

本文将讨论如何在 MongoDB 中使用漂亮的打印来显示格式化的结果。MongoDB 中的漂亮打印

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便