mongodb使用使用 SCRAM 验证客户端设置访问控制

2023-11-08

1、在没有访问控制的情况下启动 MongoDB

启动没有访问控制的mongodb实例,打开终端并以mongod用户身份运行以下命令:

mongod --port 27017 --dbpath /var/lib/mongodb

若是按照我前几篇的步骤来的,则查看数据库是否启动即可。

2、连接到实例

mongosh --port 27017

3、创建用户管理员

切换到admin库
创建具有 userAdminAnyDatabase和 readWriteAnyDatabase角色的用户

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

以上代码运行后会提示输入密码,输入即可。

myUserAdmin用户具有的权限:

创建用户
授予或撤销用户的角色
创建或修改自定义角色
读写任何数据库
管理和操作任何数据库

说明白点,他就是超级管理员root

4、重启数据库

5、以用户管理员的身份连接

连接后验证

mongosh --port 27017
use admin
db.auth("myUserAdmin", passwordPrompt()) // or 直接将passwordPrompt()替换为密码

连接时认证

mongosh --port 27017  --authenticationDatabase \
    "admin" -u "myUserAdmin" -p

6、创建自定义角色

管理操作角色

db.createRole(
   {
     role: "manageOpRole", 
     privileges: [
       { resource: { cluster: true }, actions: [ "killop", "inprog" ] },
       { resource: { db: "", collection: "" }, actions: [ "killCursors" ] }
     ],
     roles: []
   }
)

新角色授予终止任何操作的权限。(该权限使用要注意)

要运行的角色

db.createRole(
   {
     role: "mongostatRole", 
     privileges: [
       { resource: { cluster: true }, actions: [ "serverStatus" ] }
     ],
     roles: []
   }
)

该角色可以操作集群

7、修改角色权限

确定用户的角色和权限
要显示要修改的用户的角色和权限,可以使用 db.getUser()和db.getRole()方法。

例子:(查看reportsUser在reporting库中的角色)

use reporting
db.getUser("reportsUser")

要为该角色授予reporting的数据库权限 readWrite:

use reporting
db.getRole( "readWrite", { showPrivileges: true } )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb使用使用 SCRAM 验证客户端设置访问控制 的相关文章

随机推荐

  • Systemd 要点:使用服务、单位和期刊

    介绍 近年来 Linux 发行版越来越多地从其他 init 系统过渡到systemd The systemd工具套件提供了快速灵活的初始化模型 用于从启动开始管理整个机器 在本指南中 我们将向您快速介绍您在管理应用程序时需要了解的最重要的命
  • Primefaces FileUpload 组件示例教程

    今天我们将研究 Primefaces FileUpload 组件 HTML 为您提供file输入标签来选择文件 但是我们需要更多信息才能将文件上传到服务器 Primefaces 为您提供现成的解决方案 消除了这种负担文件上传组件帮助您创建漂
  • 如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书

    介绍 TLS 或传输层安全 及其前身SSL代表安全套接字层 是用于将正常流量包装在受保护的加密包装器中的 Web 协议 使用此技术 服务器可以在服务器和客户端之间安全地发送流量 而不会出现消息被外部各方拦截的可能性 证书系统还帮助用户验证他
  • 如何在 Angular Material 中使用自定义 SVG 图标

    介绍 The 角材料库提供了一套采用 Material Design 风格的 Angular 组件 其中一个这样的组件是
  • 如何在 Ubuntu 12.04 上安装 MongoDB

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • React Router v6 抢先体验

    在撰写本文时 React Router v6 仍处于 alpha 阶段 但现在是时候开始使用它并探索未来的发展了 本指南将带您了解新功能 变化 如您所知 主要维护者分叉了反应路由器项目创建一个轻量级替代品 称为到达路由器2018年初 在此期
  • 在 Linux 中减小 PDF 文件大小

    在我们的 Linux 系统中 如果我们有一个很大的 PDF 文件 我们可能想减小它的大小 在本教程中 我们将了解在 Linux 中减小 PDF 大小或压缩 PDF 文件的不同方法 让我们找出一些命令行和 GUI 方法来处理这个问题 在 Li
  • 如何在 FreeBSD 10.1 上安装 Apache、MySQL 和 PHP (FAMP) 堆栈

    介绍 FAMP 堆栈类似于 Linux 上的 LAMP 堆栈 是一组开源软件 通常安装在一起以使 FreeBSD 服务器能够托管动态网站和 Web 应用程序 FAMP 是首字母缩略词 代表FfreeBSD 操作系统 A阿帕奇 网络服务器 M
  • 如何使用 JSON.parse() 和 JSON.stringify()

    介绍 The JSON object在所有现代浏览器中都可用 有两种有用的方法来处理 JSON 格式的内容 parse and stringify JSON parse JSON parse 获取 JSON 字符串并将其转换为 JavaSc
  • C++ 中的字符串连接:连接字符串的 4 种方法

    在本文中 我们将揭示在中执行字符串连接的各种方法C 语言 该方法在编程时可用于多种目的 但总的来说 这个概念与组合来自不同位置的两个字符串并将它们放在一起是相同的 C 中的字符串连接技术 在 C 中连接字符串时可以考虑以下技术 C 连接 运
  • 如何在 CentOS 7 上安装和使用 PostgreSQL

    介绍 关系数据库管理系统是许多网站和应用程序的关键组件 它们提供了一种结构化的方式来存储 组织和访问信息 PostgreSQLPostgres 或 Postgres 是一个关系数据库管理系统 提供 SQL 查询语言的实现 它是许多小型和大型
  • 如何在 VPS 上使用 Nginx 设置 FastCGI 缓存

    Prelude Nginx 包含一个 FastCGI 模块 该模块具有用于缓存 PHP 后端提供的动态内容的指令 设置此功能无需额外的页面缓存解决方案 例如反向代理 想想Varnish 或特定于应用程序的插件 还可以根据请求方法 URL c
  • DNS 术语、组件和概念简介

    介绍 DNS 即域名系统 通常是学习如何配置网站和服务器的一个非常困难的部分 了解 DNS 的工作原理将帮助您诊断配置网站访问的问题 并让您更深入地了解幕后发生的事情 在本指南中 我们将讨论一些基本的 DNS 概念 这些概念将帮助您开始使用
  • Web 服务面试问题 - SOAP、RESTful

    欢迎来到 Web 服务面试问题及其详细答案 最近我写了很多关于 Web 服务的文章 我们如何用 Java 创建 SOAP 和 RESTful Web 服务 Web 服务面试问题 Here I am providing you a list
  • 如何在 CentOS 6 上使用 Logstash 和 Kibana 集中日志

    状态 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生命周期终
  • Java 是按值传递,而不是按引用传递

    介绍 许多 Java 程序员质疑 Java 是否按值传递 or 通过引用传递 本文总结了为什么 Java 总是按值传递 首先 按值传递和按引用传递是什么意思 按值传递 将方法参数值复制到另一个变量 然后将复制的对象传递给方法 该方法使用副本
  • 如何在 Angular 中使用 Chart.js 和 ng2-charts

    介绍 Chart js是一个流行的 JavaScript 图表库ng2 charts是 Angular 2 的包装器 用于将 Chart js 集成到 Angular 中 在本教程中 您将使用 Chart js 和ng2 charts在 A
  • 将 CSV 文件读入 R 中的数据帧

    借助 R 提供的特定函数 将 CSV 文件读入数据帧要容易得多 什么是 CSV 文件 CSV 扩展为逗号 分隔 值 在此文件中 存储的值用逗号分隔 存储数据的过程要容易得多 为什么 CSV 是最常用的数据存储文件格式 将数据存储在 Exce
  • 如何在 Ubuntu 16.04 上为多个平台构建 Go 可执行文件

    介绍 The Go编程语言附带丰富的工具链 使获取包和构建可执行文件变得异常容易 Go 最强大的功能之一是能够为任何 Go 支持的外部平台交叉构建可执行文件 这使得测试和包分发变得更加容易 因为您不需要访问特定平台即可为其分发包 在本教程中
  • mongodb使用使用 SCRAM 验证客户端设置访问控制

    1 在没有访问控制的情况下启动 MongoDB 启动没有访问控制的mongodb实例 打开终端并以mongod用户身份运行以下命令 mongod port 27017 dbpath var lib mongodb 若是按照我前几篇的步骤来的