IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mongodb创建用户角色 -> 正文阅读

[大数据]Mongodb创建用户角色


一、Mongodb数据库用户角色?

MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问。 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。MongoDB系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。
划重点
1、mongodb的用户名和密码是基于特定数据库的,而不是基于整个系统的。所有所有数据库db都需要设置密码
2、mongodb是没有默认管理员账号,所以要先添加管理员账号,在开启权限认证。
3、第一个用户必须具有创建其他用户的权限。 创建第一个用户后,必须使用该用户进行身份验证以添加后续用户。

二、创建用户,其权限有哪些

1.创建用户语法格式

use admin
db.createUser(
	{
		user:'user',
		pwd :'123',
		customData:{"desc":"This user is for administrators"},
		roles:[
				{
					role:'userAdminAnyDatabase',db:'admin'
				}
		]
	}
)

2.字段解析

user :用户名 --必须项
pwd :密码 --必须项
customData :用于描述账户信息 --非必须项
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。–必须项(可以为空集合)

role里的角色可以选:
1、Built-In Roles(内置角色):
a)数据库用户角色:read、readWrite;
b)数据库管理角色:dbAdmin、dbOwner、userAdmin;
c)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
d)备份恢复角色:backup、restore;
e)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
f)超级用户角色:root
–这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner、userAdmin、userAdminAnyDatabase)
h)内部角色:__system

2、具体角色:
a)Read :允许用户读取指定数据库
b)readWrite:允许用户读写指定数据库
c)backup,retore :在进行备份、恢复时可以单独指定的角色,在db.createUser()方法中roles里面的db必须写成是admin库,要不然会报错
d)dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
e)userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
f)clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
m)readAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的读权限
n)readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
o)userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限,
q)dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
k)root:只在admin数据库中可用。超级账号,超级权限

三、创建用户实列

创建超级管理员用户

	use admin
	db.createUser({user:'admin',pwd:'admin123', roles:[{role:'root', db:'admin'}]}) 

创建用户管理员账户(能查询其他库集合,但不能查询集合内容

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

创建访问任意库读写的账户

	use admin
	db.createUser({user:'admin',pwd:'admin123', roles:[{role:'readWriteAnyDatabase', db:'admin'}]}) 

创建用于备份时的用户,如若是恢复权限,则将backup换为restore即可

	use admin
	db.createUser({user:'admin',pwd:'admin123', roles:[{role:'backup',db:'admin'}]}) 

创建只对test库有读写权限的用户

	use test
	db.createUser({user:'admin',pwd:'admin123', roles:[{role:'readWrite',db:'test'}]}) 

更新用户角色,修改用户权限,不会覆盖原权限信息,只新增权限:

	use test
	db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})

更新用户密码

	use test
	db.changeUserPassword("admin","admin123456")

删除用户

	use test
	db.dropUser({'admin'}) 

查看所有用户

	use test
	show users

创建完管理元账号后,修改mongo配置,使能验证用户信息

sudo vi /etc/mongod.conf
找到#security: 取消注释,修改为:
security:
     authorization: enabled #注意缩进,缩进参照配置文件其他配置。缩进错误可能第6步重启不成功。
   
systemctl restart mongod    #重启mongod

验证新建用户:

	mongo 
	use admin
	db.createUser({ user: "root", pwd: "root", roles: [{ role: "root", db: "admin" }] })
	db.auth("root", "root") 如果返回1,则表示成功。
	exit
	sudo vi /etc/mongod.conf 修改为#security:为security: authorization: enabled 
	systemctl  restart mongo
	创建test库有读写权限的用户
	mongo
	use test
	db.auth("admin","admin123")
	db.test.insert({"m":"2"})
	db.test.find({})

在这里插入图片描述

总结

(1)非admin数据库的用户不能使用数据库命令,比如show dbs等。
(2)admin数据库中的用户被视为超级用户(即管理员)。在认证之后,管理员可以读写所有数据库,执行特定的管理命令,
(3)在开启安全检查之前,一定要至少有个管理员账号。
(4)数据库的用户账号以文档的形式存储在system.users集合里面。可以在system.users集合中删掉用户账号文档,就可以删除用户。
(5)mongodb是没有默认管理员账号,所以要先添加管理员账号,在开启权限认证。

链接: https://www.cnblogs.com/lyalong/p/14108852.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:24:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:21:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码