MongoDB 用户管理

server/2024/10/9 0:18:47/

概述

MongoDB安装完成后,数据库 admin 中没有任何用户账户。此时,MongoDB 向从本地主机发起的连接提供完整的数据库管理权限。因此配置 MongoDB 新实例时,首先需要创建用户管理员账户和数据库管理员账户:

  • 用户管理员账户可在 admin 和其他数据库中创建用户账户。
  • 数据库管理员账户,用于管理数据库、集群、复制和 MongoDB 其他方面的超级用户。

用户管理员账户和数据库管理员账户都是在数据库 admin 中创建的。在 MongoDB 服务器中启用身份验证后,要以用户管理员或数据库管理员的身份连接到服务器,必须向 admin 数据库验证身份,您还需在每个数据库中创建用户账户,让这些用户能够访问该数据库

MongoDB中的用户角色: 

  • 数据库用户角色:read、readWrite;  
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;  
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;  
  • 备份恢复角色:backup、restore;  
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase  
  • 超级用户角色:root
  • 内部角色:__system

一些角色的功能说明

  • read:允许用户读取指定数据库;  
  • readWrite:允许用户读写指定数据库;  
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile;  
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户;  
  • readWriteAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有数据库的读写权限;  
  • readAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有数据库的读权限;  
  • dbAdminAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有数据库的dbAdmin权限;  
  • clusterAdmin:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有分片和复制集相关函数的管理权限;  
  • userAdminAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限用户所有数据库的userAdmin权限;  
  • root:授予该权限的用户只能被创建在admin数据库中。超级账号,超级权限;

创建用户

注意:用户只能在数据库里面创建,我这里说的是你需要 use 一个数据出来之后再创建

db.createUser({user: "admin",pwd: "admin",roles: [{role: "userAdminAnyDatabase",db: "admin"}]
})

启用认证

修改/etc/mongod.conf

security: authorization: enabled

重启mongo后,需要验证

use admin;
db.auth("admin","admin")

也可以通过如下方式直接验证:

mongo -uadmin -padmin --authenticationDatabase admin

创建数据库管理员账户

db.createUser({user: "dbadmin",pwd: "dbadmin",roles: ["readWriteAnyDatabase","dbAdminAnyDatabase","clusterAdmin"]
})

readWriteAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有数据库的读写权限;  

dbAdminAnyDatabase:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有数据库的dbAdmin权限;

clusterAdmin:授予该权限的用户只能被创建在admin数据库中,该权限赋予用户所有分片和复制集相关函数的管理权限; 

创建超级管理员账户

db.createUser({user: "dbadmin",pwd: "dbadmin",roles: ["root"]
})

root:授予该权限的用户只能被创建在admin数据库中。超级账号,超级权限; 

创建普通用户

db.createUser({user: "bernie",pwd: "bernie",roles: [{role: "readWrite",db: "test"}]
})

readWrite:允许用户读写指定数据库

查看用户

show users;

查看指定用户

adb> db.runCommand({usersInfo:'bernie'})
{users: [{_id: 'adb.bernie',userId: UUID('bc118876-f261-4330-9273-710d2b7da1ca'),user: 'bernie',db: 'adb',roles: [ { role: 'readWrite', db: 'test' } ],mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]}],ok: 1
}

删除用户

db.dropUser("bernie")

修改用户信息

db.changeUserPassword("username", "xxx")
db.runCommand({updateUser:"username",pwd:"xxx",customData:{title:"xxx"}}
)

修改用户权限

// 为用户natasha追加权限
db.grantRolesToUser("zhangsan",[{role: "readWrite", db: "saturn"}])  
// 替换原有的权限
db.updateUser("zhangsan",{roles: [{role: "readWrite",db: "saturn"},{role: "readWrite",db: "runoob"}]}) 
// 删除指定权限
db.revokeRolesFromUser("zhangsan",[{role: "readWrite", db: "saturn"}])


http://www.ppmy.cn/server/128992.html

相关文章

高考技术——pandas使用

百家讲坛,谈论古今,今天我们不聊别的,我们来聊一聊中国的国宝——大熊猫(bushi) 好好,言归正传,我们今天来讲pandas import pandas as pd 申明无需多言,高考主要考察Series和Data…

使用iTextPDF库设置文字为英文样式

在使用iTextPDF库时,设置文字为英文格式通常涉及选择适当的英文字体、设置字体样式(如大小、粗细等)以及确保文本内容符合英文排版规范。以下是如何在iTextPDF中设置文字为英文格式的具体步骤: 一、选择英文字体 iTextPDF库内置…

如何让70B参数的大型语言模型在资源有限的边缘设备上高效运行?

你有没有想过,像我们平时使用的智能手机、家里的智能音箱这样的小设备,也能运行那些参数量高达数十亿的大型语言模型(LLM)呢?这听起来像是天方夜谭,毕竟这些模型动辄需要巨大的算力和存储资源,但实际上,随着技术的发展,这个梦想正在变成现实。那么,问题来了,怎么在资…

yolov8.yaml

前面说了yolov8的核心代码放在ultralytics里面,今天我们一起学习一下 YOLOv8模型下的Ultralytics文件目录结构。每个文件夹都有不同的作用,以下是对各个文件夹的解释: assets: 这个文件夹通常存放与模型相关的资源文件,可能包括训…

LeetCode 算法:多数元素 c++

原题链接🔗:多数元素难度:简单⭐️ 题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 …

微服务实战——ElasticSearch(保存)

商品上架——ElasticSearch(保存) 0.商城架构图 1.商品Mapping 分析:商品上架在 es 中是存 sku 还是 spu ? 检索的时候输入名字,是需要按照 sku 的 title 进行全文检索的检索使用商品规格,规格是 spu 的…

Django学习笔记一:MVT的示例

Django的MVT(Model-View-Template)架构是一种将应用程序的不同部分分离的方法,旨在提高代码的可维护性和可扩展性。MVT将应用分解为三个主要部分:Model(模型)、View(视图)和Template…

2019~2023博文汇总目录

2023 大厂实践 - 哈啰:记录一次ElasticSearch的查询性能优化-CSDN博客 Shiro安全框架-CSDN博客 MQ知识点汇总-CSDN博客 工作学习记录-CSDN博客 后端架构师技术图谱-CSDN博客 2020 Elasticsearch相关技术点_elasticsearch技术点-CSDN博客 Kafka相关技术点_kafka…