MongoDB之用户与权限管理、备份与恢复管理以及客户端工具的使用

news2024/12/23 14:58:50

用户与权限管理、备份与恢复管理以及客户端工具的使用

  • 用户、权限管理
    • 内置角色
    • 创建超级管理员
    • 创建普通用户
    • 认证登录
    • 查询用户
    • 修改用户
    • 修改密码
    • 删除用户
  • 备份与恢复
    • 备份
    • 恢复
    • 定时备份
  • MongoDB操作工具
    • mongo shell
    • MongoDB Compass
    • Studio 3T

用户、权限管理

MongoDB默认不使用权限认证方式启动,但是需要设置权限以保证数据安全。

内置角色

1. 数据库用户角色:read、readWrite 

2. 数据库管理角色:dbAdmin、dbOwner、userAdmin

3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

4. 备份恢复角色:backup、restore

5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

6. 超级用户角色:root	 

创建超级管理员

MongoDB是没有默认管理员账号,所以要先添加管理员账号,并且MongoDB服务器需要在运行的时候开启验证模式

用户只能在用户所在数据库登录(创建用户的数据库),包括管理员账号

管理员可以管理所有数据库,但是不能直接管理其他数据库,要先认证后才可以

语法格式:

mongo>db.createUser(
{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ]}
)

创建root用户,角色为root

# 进入mongo shell
mongod

# 使用admin数据库(超级管理员账号必须创建在该数据库上)
use admin 

# 创建超级用户
db.createUser( { "user":"root", "pwd":"123456", "roles":["root"] } )

# 账号登录
use admin
# 认证成功会返回1,失败返回0
db.auth('用户名','密码')

在这里插入图片描述

创建普通用户

在使用的数据库上创建普通用户

# 选择需要创建用户的数据库
use demo

#  db: 设置访问数据库
#  role:设置访问数据库权限:read, write, readWrite
db.createUser( {"user": "db01", "pwd": "123456", "roles": [{"db": "demo", "role": "read"}]} )

db.createUser( {"user": "db02", "pwd": "123456", "roles": [{"db": "demo", "role": "readWrite"}]} )

认证登录

若需要连接Mongodb进行认证登录,则需要打开Mongodb的认证开关

编辑D:\program files\mongodb\Server\4.4\bin\monogod.cfg然后找到 #security:去掉#号,开启安全认证。该mongodb.cfg文件是 yaml 文件格式,缩进应该使用空格进行缩进。

monogod.cfg配置文件可以是yaml格式也可以是键值对格式。

A.键值对
		在mono.conf中设置 auth=true

B.yaml格式
		#security:
			security:
			  authorization: enabled

重启Mongodb

C:\WINDOWS\system32>net stop mongodb
MongoDB Server (MongoDB) 服务正在停止.
MongoDB Server (MongoDB) 服务已成功停止。


C:\WINDOWS\system32>net start mongodb
MongoDB Server (MongoDB) 服务正在启动 .
MongoDB Server (MongoDB) 服务已经启动成功。

使用账号和密码连接数据库

mongo.exe ‐u root ‐p root‐‐authenticationDatabase admin

在这里插入图片描述

查询用户

查询admin库下所有用户:

use admin

show users

修改用户

语法格式:

db.updateUser(
  "<username>",
  {
    customData : { <any information> },
    roles : [
              { role: "<role>", db: "<database>" } | "<role>",
              ...
            ],
    pwd: "<cleartext password>"
    },
    writeConcern: { <write concern> })

创建test用户:

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

修改test用户的角色为readWriteAnyDatabase

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

修改密码

语法格式:

db.changeUserPassword("username","newPasswd") 

修改 test用户的密码为123

se admin 
db.changeUserPassword("test","123")

删除用户

# 进入账号数据所在的数据库
use admin

db.dropUser('用户名')

备份与恢复

MongoDB备份与恢复可以通过mongodump和mongorestore命令行工具来完成。

注意:一定要退出mongo环境,然后执行操作。

备份

mongodump -h dbhost -d dbname -o dbdirectory

mongodump -h 127.0.0.1 -d demo -o /backup

# 备份所有数据
mongodump

恢复

mongorestore -h dbhost -d dbname --dir dbdirectory

mongorestore -h 127.0.0.1 -d demo --dir /backup

定时备份

使用crontab 定义执行脚本备份数据库

打开当前用户的crontab文件

crontab -e

在打开文件中添加定时任务

# mysql 定时备份脚本
mysqldump -u用户名 -p密码 dbname | gzip > /backup/$(date +%Y%m%d_%H%M%S).sql.gz

# mongodump命令进行备份  gzip压缩输出重定向到以当前时间为名的压缩文件中
mongodump -h dbhost -d dbname -o dbdirectory | gzip > /backup/$(date +%Y%m%d_%H%M%S).sql.gz

MongoDB操作工具

mongo shell

使用MongoDB自带命令行工具 mongo,进入MongoDB shell中操作

mongo [--host IP地址] [--port 端口]
root@d8110bf377a7:/# mongo
MongoDB shell version v5.0.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a703ae81-c58c-4021-9f18-e10a1270d0bc") }
MongoDB server version: 5.0.5
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
> show dbs;
admin   0.001GB
config  0.000GB
demo    0.000GB
local   0.000GB
> 

MongoDB Compass

官网地址: https://www.mongodb.com/try/download/tools

MongoDB Compass是官方提供的免费 GUI 管理工具,包含如下功能

数据管理(增删改查)

Schema 管理

索引管理

性能排查

实时性能监控

在这里插入图片描述
连接Atlas免费MongoDB云数据库:输入连接: mongodb+srv://账户:密码@cluster0.ruiuw.mongodb.net/myFirstDatabase
在这里插入图片描述
测试

添加数据库:demo

添加集合:user

添加一条数据

选择集合user即能看到MongoDB Compass提供的功能,如:Documents,Aggregations,Schema…
在这里插入图片描述

Studio 3T

Studio 3T是mongodb优秀的客户端工具。

Studio 3T官网: https://studio3t.com/download/#windows
在这里插入图片描述
双击运行,直接安装
在这里插入图片描述
创建一个连接,同时填写连接信息。
在这里插入图片描述
选择配置好的一个连接
在这里插入图片描述
连接成功
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1051344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〔025〕Stable Diffusion 之 接口开发 篇

✨ 目录 🎈 启动接口🎈 接口文档🎈 接口开发🎈 代码解释🎈 启动接口 想要在各种其他服务中对接 Stable Diffusion 的绘画功能,需要开启 Stable Diffusion 的 api 功能开发接口需要有一定的技术功底才可以,非技术人员其实不用学习直接在 webui-user.bat 文件中的 se…

乒乓球游戏控制器verilog带报告

名称&#xff1a;乒乓球游戏控制器verilog&#xff08;代码在文末付费下载&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 乒乓球控制器&#xff08;数码管显示各3位&#xff1a;2位显示当前局分数&#xff0c;1位赢得局数&#xff0c;再…

Linux 端口

查看端口占用 1、使用nmap命令查看端口的占用情况 安装nmap&#xff1a;yum -y install nmap 语法&#xff1a;nmap 被查看的IP地址 可以看到&#xff0c;本机&#xff08;127.0.0.1&#xff09;上有7个端口现在被程序占用了。 2、使用netstat命令查看指定端口的占用情况 语…

SAAJ:SOAP with Attachments API for Java interface

介绍 支持带附件的SOAP消息Java接口&#xff08;SAAJ&#xff1a;SOAP with Attachments API for Java interface&#xff09;&#xff0c;定义了一套API&#xff0c;使开发者可以产生、消费遵从SOAP 1.1, SOAP 1.2, 和SOAP Attachments Feature的消息。 参考资源 1.4版本参…

Linux常见指令2

Linux常见指令[2] 一.Linux常见指令1.man补充知识:nano 2.cp3.mv4.cat补充知识:echo输出重定向追加重定向回到catcat其他用法 5.less和more补充内容回到less 6.head和tail补充知识:命令行管道 一.Linux常见指令 前言:为了方便我们在Linux中写指令 介绍一下: 1.clear指令: 清屏…

Springboot中slf4j日志的简单应用

1、注入依赖&#xff08;pom.xml&#xff09; <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.9</version> &…

C语言进程的相关操作

C语言进程的相关操作 进程简介 每个进程都有一个非负整数形式到的唯一编号&#xff0c;即PID&#xff08;Process Identification&#xff0c;进程标识&#xff09;PID在任何时刻都是唯一的&#xff0c;但是可以重用&#xff0c;当进程终止并被回收以后&#xff0c;其PID就可…

分析一段js加密代码

源代码 (function(){var KBP,EbW482-471;function wHY(r){var y2043987;var lr.length;var a[];for(var g0;g<l;g){a[g]r.charAt(g)};for(var g0;g<l;g){var vy*(g289)(y%39401);var ty*(g287)(y%31258);var xv%l;var pt%l;var ma[x];a[x]a[p];a[p]m;y(vt)%2251814;};re…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署推箱子经典小游戏

[TOC](华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署推箱子经典小游戏 一、前言二、Sokoban小游戏介绍2.1 Sokoban小游戏简介2.2 Sokoban小游戏玩法 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买云耀云服务器L实例4.1 购买云耀云服务器L实例4.…

跟着Nature Plant学图形颜色搭配 | caecopal包

写在前面 今天在Nature Plant(IF:16.0)期刊中看到文中的图形&#xff0c;进一步的查看后发现作者使用一个R包来进行图形颜色的搭配。就此机会也分享给大家&#xff0c;若你需要可以进一步查看及使用此包。 对于图形颜色的搭配&#xff0c;对于文章整体美观是非常重要。但是&a…

坐标系上的交互+分治与交互:CF788D

https://codeforces.com/contest/788/problem/D 坐标系上的交互有一种常见套路&#xff0c;就是抓住一些关键的线 x轴y轴yx&#xff08;就是此题&#xff09; 然后考虑接下来怎么做。 交互题常见有二分的套路&#xff0c;此题我们可以考虑推广到分治。 不断判断mid&#xf…

修改sqlmap-Tamper脚本

修改sqlmap-Tamper脚本 文章目录 修改sqlmap-Tamper脚本1 sqlmap官网2 sql注入漏洞注入尝试3 环境&#xff1a;sqli-labs/Less-26a/3.1 尝试宽字节注入: 3.2 sqlmap使用3.3准备修改sqlmap使用 4 sqlmap中-tamper工厂&#xff08;输入输出&#xff09;4.1 [参考文章&#xff1a;…

用MFC写的OCX,在HTML调用事件有响应,多线程中调用时网页上事件无响应 :用消息通知来更新可以

问题:连接成功后&#xff0c;点交易无事件。但每次点连接都有事件。直接点交易也有事件。好像跟延时有关系。 Sleep(10000)可以&#xff0c;跟延时没关系。 固定参数也无响应&#xff0c;跟参数没关系。 可能是多线程有关系。用消息通知来更新可以。 void Callback(int code…

git创建仓库并建立远程连接

创建仓库 以gitee为例 首先需要创建一个项目在gitee 中 创建仓库之后 建立连接 git init 初始化项目 git add . // 将所有文件存储到暂存区 git commit -m 自己定义的名字 // 本地提交更新 git remote add origin 远程仓库地址 // 之后就将本地和远程仓库建立连…

JavaScript 基础第三天笔记

JavaScript 基础第三天笔记 if 多分支语句和 switch的区别&#xff1a; 共同点 都能实现多分支选择&#xff0c; 多选1大部分情况下可以互换 区别&#xff1a; switch…case语句通常处理case为比较确定值的情况&#xff0c;而if…else…语句更加灵活&#xff0c;通常用于范围…

无线通信——Mesh的最后一公里问题

其实“最后一公里”问题直到现在也是在探究的话题。首先解释一下什么是“最后一公里”&#xff1a;我们下班了&#xff0c;假如公司有专车把我们送到了地铁站。这非常的方便&#xff01;从地铁站坐上回家方向的地铁。也是很省事儿&#xff01;虽然中途在地铁需要换站&#xff0…

亚信科技AntDB数据库 高并发、低延迟、无死锁,深入了解AntDB-M元数据锁的实现

AntDB-M在架构上分为两层&#xff0c;服务层和存储引擎层。元数据的并发管理集中在服务层&#xff0c;数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性&#xff0c;引入了元数据锁&#xff08;MDL&#xff09;。 AntDB-M提供了丰富的元数据锁功能&#xff0…

华为鸿蒙4,3,2禁用Google谷歌服务框架,使用最新谷歌Google play服务

华为鸿蒙4,鸿蒙3,鸿蒙2有一些应用或者游戏尤其是游戏需要最新版的谷歌play服务支持才可以使用。但是华为的鸿蒙系统解决完”设备未经 play 保护机制认证”之后,最稳定的谷歌play服务是20这个版本&#xff0c;一旦升级到最新的Google谷歌play服务&#xff0c;目前是最新版本23这…

LabVIEW应用开发——VI模块化

我们在写C语言的时候&#xff0c;一些模块化的功能或者多次调用的功能&#xff0c;我们一般会用一个函数封装起来&#xff0c;方便使用并且让代码看起来更加的简洁。这种函数一般都会包含这几个概念&#xff0c;输入参数、输出参数和返回值。而LabVIEW的VI就可以当作是一个函数…

led台灯哪个牌子最好?2022最新的台灯牌子排名

想要选好护眼台灯首先我们要知道什么是护眼台灯&#xff0c;大的方向来看&#xff0c;护眼台灯就是可以保护视力的台灯&#xff0c;深入些讲就是具备让灯发出接近自然光特性的光线&#xff0c;同时光线不会伤害人眼而出现造成眼部不适甚至是视力降低的照明设备。 从细节上看就…