MongoDB 学习笔记(六):备份与用户管理
一、启动项
1、在启动数据库服务时可以在命令行输入mongod命令,然后直接带一些参数,比如“mongod --dbpath D:\Installations\MongoDB-2.4.6\MongoDBDATA”,还可以将mongod命令后的那些参数写入一个配置文件中, 然后在命令行中使用--config参数指定配置文件,比如将--dbpath参数写入文件中,如下图:
然后在命令行中使用mongod命令加上--config参数一样可以启动数据库服务,如下图:
2、要查看启动数据库服务有哪些参数可以给我们使用,可以使用“mongod --help”命令查看;另外在这个链接中有中文的参数说明(http://www.uspcat.com/forum.php?mod=viewthread&tid=7722&extra=page%3D1)。
3、MongoDB默认的端口是27017,Web访问端口是28017,Web访问端口会是默认端口大小再加1000。比如指定MongoDB的端口是8888,则Web端口会是9888,如下图:
4、停止MongoDB数据库服务
- 直接按下Ctrl+C。
- 登录admin数据库,使用db.shutdownServer()命令,如下图:
二、导入与导出、运行时备份与恢复
1、导出
导出可以使用mongoexport命令,导出会中断其它操作。常用参数:
- -d:指明要导出的数据库
- -c:指明要导出的集合
- -o:指明要导出的文件名
- --host:指明数据库主机地址(不写默认就是本机)
- --port:指明数据库端口(不写默认就是27017)
如下图:导出mdb数据库中的person集合
2、导入
导入可以使用mongoimport命令,导入也会中断其它操作。常用参数:
- --db:指明要导入到的数据库(如果数据库不存在会自动创建)
- --collection:指明要导入到的集合(如果集合不存在会自动创建)
- --file:数据文件地址
- --host:指明数据库主机地址(不写默认就是本机)
- --port:指明数据库端口(不写默认就是27017)
如下图:导入数据到mdb数据库中的person集合
3、运行时备份
运行时备份可以使用mongodump命令,它不会中断其它操作,但可能会遗漏数据,因为可能内存中的数据尚未写回数据库中。如下图:备份mdb数据库
4、运行时恢复
运行时恢复可以使用mongorestore命令,如下图:恢复mdb数据库
5、懒人备份
MongoDB是文件数据库,所以可以用拷贝文件的方式进行备份。
三、Fsync锁与数据修复
1、正如上面所说的运行时备份,它虽然不会中断其它操作,但是可能会遗漏数据,因为它只会备份数据库,缓冲池中没有来得及写回数据库中的数据可能就 没有备份。所以这个时候就可以用到Fsync锁,加上锁后,缓冲池的数据先写回数据库中,然后进行备份或者是恢复,完成后再解锁。如下图:
2、上锁和解锁
- 上锁:上锁只能用在admin数据库上,如下图:
- 解锁:从上图中可以发现解锁可以用db.fsyncUnlock()的方式。
3、数据修复
当停电等不可逆转情况发生,由于MongoDB的存储结构导致会产生垃圾数据,这时候就可以使用数据库的自我修复,命令为db.repairDatabase()。
四、用户管理与安全认证
1、添加用户
为某个数据库添加用户:db.addUser("用户名", "密码")。如下图:为admin数据库添加用户admin001,密码123456,为mdb数据库添加用户mdb001,密码123456
然后在数据库中就会生成一个叫做system.users的集合,里面就保存了该数据库的用户信息,如下图:
2、安全认证
在启动数据库时如果没有加入--auth参数,则MongoDB默认是不会进行安全检查的,不需要用户名和密码就能够进入数据库进行操作了,如下图:进入mdb数据库无法登录进行操作
当启用了安全认证后进入某个数据库需要使用该数据库中的用户名和密码登录后才能进行操作,如下图:首先是进入test数据库,然后切换到mdb数据库,然后使用之前为mdb数据库创建的用户“mdb001”登录,然后该用户就可以进行数据库操作了
当启用了安全认证后,不是admin数据库的用户是不能使用“show dbs”命令的,如下图:
3、删除用户
进入到该数据库,然后删除该数据库中system.users集合中要删除的用户所在文档即可,如下图:
MongoDB 学习笔记(六):备份与用户管理的更多相关文章
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- linux初级学习笔记七:linux用户管理,密码和组命令详解!(视频序号:04_1)
本节学习的命令: 用户管理命令:useradd,userdel,id,finger,usermod,chsh,chfn,passwd,pwck, 组管理命令:groupadd,groupmod,gro ...
- linux初级学习笔记六:linux用户及权限详解!(视频序号:03_4)
本节学习的命令:/etc/passwd,/etc/shadow,/etc/group文件详解 本节学习的技能: 安全上下文 文件与目录的权限管理 影子命令 用户,用户组类别详解 /etc/passwd ...
- MongoDB学习笔记六:进阶指南
[数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...
- MongoDB学习笔记六—查询下
查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...
- MongoDB学习笔记(转)
MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...
- MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁
权限 绑定内网I ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- MongoDB学习笔记(六)--复制集+sharding分片 && 总结
复制集+sharding分片 背景 主机 IP 服务及端口 Server A ...
随机推荐
- 传输模型,网络层次划分,三次握手,四次挥手,IP与端口,套接字socket
了解套接字之前,需要先了解基本的传输模型 其次,还需要了解网络的七层划分和四层结构 在python中,数据链路层相当于硬件层,python不需要了解,只用在传输层进行学习就足够了 其中,传输层分为TC ...
- nyoj 711 枚举+并查集
#include<stdio.h>//从大到小不断枚举边直到找到s-t的路径,判断从s可以到t可以用并查集来判断 #include<stdlib.h>//枚举最大的一条边肯定 ...
- C语言——定义&&声明
1.变量的定义&声明 变量的声明有两种情况: <1>一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间. <2>另一种是不需要建立存储空间的. ...
- Wireshark中的一些SNMP相关的过滤器
Wireshark中的一些SNMP相关的过滤器 转自 http://linmingren2003.blog.163.com/blog/static/567510032011419825097/ 由 ...
- [jQuery]jQuery获取URL参数
// jQuery url get parameters function [获取URL的GET参数值]// <code>// var GET = $.urlGet(); //获取URL的 ...
- POJ 3225
基本参考http://blog.csdn.net/metalseed/article/details/8039326 总的来说,敲完一遍理解会更加好一点,标记下传法. U:把区间[l,r]覆盖成1I: ...
- IntelliJ IDEA测试学习网站
IntelliJ IDEA测试学习网站 http://idea.lanyus.com/ 嗯,请支持正版:
- 设计模式C++实现——组合模式
模式定义: 组合模式同意你将对象组合成树形结构来表现"总体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合. 这个模式可以创建一个树形结构,在同一个结构中处理嵌套 ...
- Gym-101915A Printing Books 模拟
题面 题意:给你N,X, X表示这本书从X开始编号,每个X是几位数,计数器就加几, 然后问你如果从X,开始编号,计数器为N的时候,翻了几页,不能刚好为N输出-1. (例如,5 99,答案为2,因为 ...
- Blender插件之操作器(Operator)实战
前言 在Blender中, 操作器(Operator)是它的核心. 用户通过各种操作器来创建和操作场景中的物体. 操作器对象继承自 class bpy.types.Operator(bpy_struc ...