添加用户和权限|学习笔记

简介: 快速学习添加用户和权限

开发者学堂课程【MongoDB精讲课程(下)添加用户和权限学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12991


添加用户和权限

 

内容介绍:

一、单实例环境

二、创建超级管理员用户

三、创建普通用户bobo

 

本节介绍安全认证的具体操作,具体操作分为两种情况:单实例环境和集群环境:

单实例只需要新增一个用户,给此用户赋予一个角色即可。

集群环境 集群环境实际上包括副本集和之前搭建的分片集群,集群环境除了开启用户认证,集群之间相互通讯的还需要安全认证。

 

一、单实例环境

比较简单,只需要将之前 single 的单机开启,然后开启一些用户,赋予用户一些角色,然后通过用户对数据库进行指定的操作。

目标:对单实例的 MongoDB 服务开启安全认证,这里的单实例指的是未开启副本集或分片的MongoDB实例。

1.关闭服务

在搭建单实例环境前需要关闭之前的服务。

输入clear

关闭之前搭建的分片集群的服务,再来输入

ps-ef |grep mongo

查看当前开启了哪些服务

image.png

上述mongo服务都可以进行关闭,客户端也可以先进行退出,在两个客户端输入exit,退出后进行关闭。

当前分片开启的一些服务都要进行关闭,输入

kill -2 11305 20789 20820 20879 20973 21005 21035 21246 21288 21328 24718

杀掉后再来查看,输入ps-ef |grep mongo

整个环境变得干净,先来启动单机,输入

/usr/local/mongodb/bin/mongod-f/mongodb/single/mongod.conf

单机启动后再输入ps-ef |grep mongo查看,发现结果种存在刚才启动的单机。启动完单机后连接客户端,输入

/usr/local/mongodb/bin/mongo--host 180.76.159.126--port 27017

此时就是最普通简单的一个mongo服务的单实例环境。

 

二、创建超级管理员用户

在创建普通用户前先创建管理员,先要切换到 admin 库,输入

show dbs

admin 是作为 mongo 服务的一些权限管理,切换到 admin 库后创建超管,输入

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

user是用户名,pwd 是指定密码,roles 代表需要赋予 myroot 什么权限,roles 权限的语法:

roles:[{role:root,db:admin}]

实际上是一个json对象,roles可以赋予多个,此处只赋予一个权限,role用户角色是root,因为超管针对的是admin库,所以db只能写admin。语法也可以进行简写,例如当前库就在admin下,admin赋予的角色只需要在后面添加上root字符串即可,代表当前admin库给myroot用户赋予超管的权限。

输入

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

显示

Successfully added user: {user:myroot,roles:[root]}

说明超管用户已经创建成功。再来创建admin普通管理员的权限

> db.createUser({user : "myadmin" , pwd : "123456" , roles:

[{role : "userAdminAnyDatabase" , db : "admin"}]})

userAdminAnyDatabase可以在指定数据库创建和修改用户(除了数据库config和local之外),相当于一个小的root,比root权限小,也可以创建和修改用户。

输入

> db.createUser({user : "myadmin" , pwd : "123456" , roles:

[{role : "userAdminAnyDatabase" , db : "admin"}]})

创建成功后可以通过system进行查看,先输入

show collection 可以看到结果有几个集合,其中包括system.users.,它里面存放着刚才创建成的用户的信息,再输入:

>db.system.users.find()

结果显示

image.png

可以看到存放了两个用户myroot和myadmin,对用户可以进行一些增删改查的操作,可以删除myadmin,只使用超管,输入

>db.dropUser(myadmin)

之后再来查看,输入

>db.system.users.find()

结果可以看到刚才创建的admin被删除

image.png

只剩下超管用户即可,除了对用户进行添加修改删除,还可以修改密码,输入

>db.changeUserPassword(myroot,123456)

此时输入>db.system.users.find()

没有任何变化

创建完成后可以进行测试,输入

>db.auth("myroot","123456")

若输入错密码,例如>db.auth("myroot","2222")

结果显示Error:Authentication failed验证失败

输入正确密码123456,结果返回值为1,就代表验证通过。说明刚才加入的超管通过,用户名为myroot,密码为123456。

以上就是整个用户添加的操作。

 

三、创建普通用户bobo

添加完超管用户后,我们真正在开发中使用超管去操作连接数据比较危险,一般还会添加一个普通用户,该普通用户权限相对较小,不会像超管一样对所有的库都有用,普通用户只去管理某一个库。例如我们常使用的库use articledb

因为我们刚才已经登录了超管用户,在进入后可以创建一个 bobo 的账户,密码为123456,但是权限比较小,只有读写的操作,读写操作针对 articledb 库。输入

>db. createUser({ user:"bobo", pwd:"123456", roles:[(role:"readWrite", db:"articledb"}]})

创建成功后可以验证 bobo,输入

>db.auth("bobo","123456")

此处返回值为1,如果此处密码输错显示验证失败。

以上新建了两个用户超级管理员和bobo普通用户,普通用户 bobo 只对 articledb有效。

相关文章
|
JSON 负载均衡 Java
Springboot整合gRPC
Springboot整合gRPC
820 0
|
7月前
|
弹性计算 安全 网络安全
从搭建到防护:阿里云服务器购买后密码设置、安全组规则、安全加固流程参考
阿里云经常推出各类云服务器相关活动,让更多用户以更实惠的价格买到心仪的云服务器。然而,购买到云服务器仅仅是第一步。为了确保云服务器能够正常运行并承载您的应用,购买之后还需要进行一系列的配置和优化工作。本文将详细介绍在阿里云活动中购买云服务器后,您必须完成的几个关键步骤,助您快速上手并充分利用云服务器的强大功能。
|
9月前
|
开发工具 开发者 iOS开发
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
1825 2
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
271 8
|
Python
python中删除含有缺失值的行
python中删除含有缺失值的行
812 2
|
NoSQL MongoDB 数据库
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
2144 0
|
Ubuntu 应用服务中间件 nginx
在Ubuntu上离线安装Nginx的踩坑经历
本文记录了作者在Ubuntu系统上离线安装Nginx的详细过程,包括下载、配置、解决依赖问题、编译和安装步骤,以及在安装过程中遇到的PCRE库依赖问题和解决方案。
3336 0
|
监控 网络协议 JavaScript
WebSocket技术详解与应用指南
WebSocket是全双工TCP协议,解决HTTP的单向通信问题,允许服务器主动推送信息。本文档介绍了WebSocket的基本概念、工作原理(基于HTTP握手,通过帧进行数据通信)、应用场景(实时聊天、在线游戏、数据监控等)和实现方法(客户端使用JavaScript API,服务器端有多种编程语言库支持)。学习WebSocket能提升Web应用的实时性和交互性。
2722 1
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
416 1
|
存储 算法 数据挖掘
技术经验解读:二维码(QRcode)基本知识
技术经验解读:二维码(QRcode)基本知识
4608 0