MongoDB 用户管理

news/2024/12/22 10:07:28/

概述

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/news/1533383.html

相关文章

设置hive本地模式

查看hive本地模式: set hive.exec.mode.local.auto;设置本地模式为true;

Windows安全日志7关键事件ID分析

背景 Windows日志里的事件分析有助于在系统出现异常时分析出异常原因,利于针对问题做出系统的修复和预防。今天阿祥就整理出Windows常见的事件,分析这些事件的具体原因,希望对系统运维工程师们有一定的帮助! 具体事件ID 1、事件ID…

C++ | Leetcode C++题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> findDisappearedNumbers(vector<int>& nums) {int n nums.size();for (auto& num : nums) {int x (num - 1) % n;nums[x] n;}vector<int> ret;for (int i 0; i < n;…

ASP.NET Core 创建使用异步队列

示例图 在 ASP.NET Core 应用程序中&#xff0c;执行耗时任务而不阻塞线程的一种有效方法是使用异步队列。在本文中&#xff0c;我们将探讨如何使用 .NET Core 和 C# 创建队列结构以及如何使用此队列异步执行操作。 步骤 1&#xff1a;创建 EmailMessage 类 首先&#xff0c…

深化专长,广博学习,软技能助力核心竞争力提升

在当今数字化、信息化的时代&#xff0c;AI技术的发展正如海浪般席卷全球&#xff0c;特别是在AIGC等大语言模型的涌现下&#xff0c;AI辅助编程工具逐渐成为编程领域的热点。这种技术变革对程序员的工作方式产生了深远影响&#xff0c;同时也带来了新的机遇和挑战。面对AI的崛…

远程访问软路由

远程访问软路由主要涉及通过互联网从远程位置访问和控制基于软件的路由器系统。以下是远程访问软路由的一般方法&#xff1a; 一、远程访问软路由的方法 通过Web管理界面访问&#xff1a; 适用于大多数支持Web管理的软路由系统。用户只需在浏览器中输入软路由的公网IP地址或域…

Oracle 相关的工具使用 SQL Developer , sqlplus

Oracle 相关的工具使用 SQL Developer &#xff0c; sqlplus 一&#xff0c;Oracle SQL Developer 连接数据库 今天在连接sqldeveloper服务器时遇到了很多问题&#xff0c;但最终还是通过网上的博客解决了问题&#xff0c;我就在总结一下我的解决过程。 一.界面 首先&#…

虚幻引擎UE5如何云渲染,教程来了

​步骤一&#xff1a;获取云渲染权限 访问渲染101官网&#xff0c;使用云渲码6666进行注册。 下载并安装渲染客户端。 步骤二&#xff1a;设置渲染环境 确保云渲染环境与您的本地环境一致&#xff0c;避免出错。 步骤三&#xff1a;任务提交 完成环境配置后&#xff0c;解析…