【MongoDB详细使用教程】一、Mac安装MongoDB

【MongoDB详细使用教程】二、MongoDB基本操作

【MongoDB详细使用教程】三、高级查询

【MongoDB详细使用教程】四、python操作MongoDB

【MongoDB详细使用教程】五、MongoDB的数据库管理

1、数据库安全

为数据库添加用户和密码

1.1、创建管理员账号和密码

  1. 登陆无密码的数据库
  2. 创建(或切换到)admin库
  3. 创建管理员账号和密码
  4. 验证管理员账号和密码

示例:

# 1
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
...
> # 2
> use admin
switched to db admin # 3
> db.createUser({user:'admin',pwd:'123',roles:["root"]})
Successfully added user: { "user" : "admin", "roles" : [ "root" ] } # 4
> db.auth('admin','123')
1

"roles" : [ "root" ] 意为分配超级管理员权限

1.2、设置服务状态为需要验证用户

正常开启服务时是不需要验证用户信息的,即使已经创建了用户。

这里我们要先关闭数据库服务,并以需要验证用户的模式启动服务。

  1. 关闭服务
  2. 重启新启动服务,并设定为需要验证
# 终端中输入:
mongod --dbpath data --logpath log/mongod.g --logappend --auth

正常开启语句后面加上--auth。

(对于windows系统,如果已经将加入服务中,需要将服务卸载后重新以需验证模式加入)

1.3、创建用户账户和密码

  1. 以管理员身份连接数据库
  2. 切换到要创建账号的数据库,并创建用户账户和密码
  3. 登录时先切换到该库,再登陆

示例:

# 1、以管理员身份连接数据库
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("5316d74a-2148-43e9-a9e8-f501cc1d9781") }
MongoDB server version: 4.0.9
> use admin # 验证账号前要先切换到admin库
switched to db admin
> db.auth('admin','123')
1 # 2、切换到要创建账号的库,并创建账号和密码,以及设置权限roles
> use mymongo
switched to db mymongo
> db.createUser({user:'mymongo',pwd:'123',roles:[{role:'dbOwner',db:'mymongo'}]})
Successfully added user: {
"user" : "mymongo",
"roles" : [
{
"role" : "dbOwner",
"db" : "mymongo"
}
]
} # 3、退出管理员账号,用刚创建的用户登陆
> exit
bye
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("47cb777a-d000-41be-a61c-1041faa31dc0") }
MongoDB server version: 4.0.9
> use mymongobu # 先切换数据库
switched to db mymongobu
> db.auth('mymongobu','123') # 再验证账号
1

注:

1、roles:[{role:'dbOwner',db:'mymongo'}] 意为该账号仅对数据库mymongo有效。

2、用户的信息会作为数据保存在数据库中,在创建用户信息前切换到哪个数据库,创建的用户信息就会保存在哪个库中,那么在登陆的时候也要先切换到该库,才可验证成功。如果创建mymongo用户时,是在admin库中,那么验证时就要先切换到admin库,验证后效果一样,mymongo账号依然只对mymongo库有效。

1.4、忘记密码/修改密码

以超级管理员连接数据库 或 以无需验证用户的模式登陆 后,

使用以下命令更改用户名:

db.changeUserPassword('用户名','新密码');

2、主从服务器

从服务器作为主服务器的冗余备份,提高了数据的可用性,并保证数据的安全性,可以用于在硬件故障和服务中断时恢复数据。

主服务器负责写入,从服务器负责读取,主服务器宕机后, 从服务器自动切换为主服务器。

2.1、创建服务器目录,用于分别存放主从服务器数据

在MongoDB目录下创建了LordSlave文件夹,并在LordSlave中创建了lord和slave文件夹。

(进入MongoDB目录需要在finder中按shift + command + G来查询/usr/local并前往。)

2.2、启动服务

语法

# 终端中输入 (IP地址、集群名称要一致):
mongod --bind_ip IP地址 --port 端口1 --dbpath 主服务器目录 --replSet 集群名称
mongod --bind_ip IP地址 --port 端口2 --dbpath 从服务器目录 --replSet 集群名称

示例

mongod --bind_ip 127.0.0.1 --port 27017 --dbpath /usr/local/MongoDB/LordSlave/lord --replSet rps
mongod --bind_ip 127.0.0.1 --port 27018 --dbpath /usr/local/MongoDB/LordSlave/slave --replSet rps

开启服务的终端窗口不要退出。

2.3、连接其中一台服务器并设置为主服务器

在新的终端窗口中输入如下命令,登陆27017端口

mongo --host 127.0.0.1 --port 27017

使用 "rs.initiate()" 命令进行初始化,显示结果:

> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "127.0.0.1:27017",
"ok" : 1,
"operationTime" : Timestamp(1572401660, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1572401660, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}

2.4、在主服务器上添加/删除另一台为从服务器

继续在当前设置完的主服务器终端中输入:

rs.add('127.0.0.1:27018')

显示结果:

rps:PRIMARY> rs.add('127.0.0.1:27018')
{
"ok" : 1,
"operationTime" : Timestamp(1572402066, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1572402066, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}

使用 "rs.status()" 查询服务器状态:

如需删除从服务器则使用

rs.remove('127.0.0.1:27018')

2.5、登陆并激活从服务器

在新终端中登陆另一台服务器:

mongo --host 127.0.0.01 --port 27018

使用 "rs.slaveOk()" 激活从服务器

rps:SECONDARY> rs.slaveOk()

至此,主从服务器配置完成,可以配置多台从服务器。

3、备份与还原

3.1、库备份

语法:

mongodump -h dbhost -d dbname -o dbdirectory

# 如果账号有密码的话加上 -u 和 -p 属性
mongodump -h dbhost -u user -p pass -d dbdirectory
  • -h:服务器地址,也可以指定端口号
  • -d:需要备份的数据库名称
  • -o:备份的数据存放位置,此目录中存放着备份出来的数据
  • -u:用户名,要加引号
  • -p:密码,要加引号

示例:

  • 先开启数据库服务
  • 创建备份目录夹/usr/local/MongoDB/bu
  • 终端中输入:
mongodump -h 127.0.0.1:27017 -d mymongo -o /usr/local/MongoDB/bu
  • 出现如下信息则备份成功
cbowendeMacBook-Pro:~ cbowen$ mongodump -h 127.0.0.1:27017 -d mymongo -o /usr/local/MongoDB/bu
2019-10-29T15:43:55.109+0800 writing mymongo.singer to
2019-10-29T15:43:55.109+0800 writing mymongo.students to
2019-10-29T15:43:55.114+0800 done dumping mymongo.singer (15 documents)
2019-10-29T15:43:55.115+0800 done dumping mymongo.students (9 documents)
  • 备份文件如下,系统自动创建了与数据库同名的文件夹mymongo

3.2、库还原

语法:

mongorestore -h dbhost -d dbname --dir dbdirectory

# 如果账号有密码的话加上 -u 和 -p 属性
mongorestore -h dbhost -d dbname -u user -p pass --dir dbdirectory
  • -h:服务器地址
  • -d:需要恢复的数据库实例(如果使用新名字,就会再重新创建一个库)
  • --dir:备份数据所在位置,可省略--dir关键字,直接写地址即可。

    (备份时会在指定备份目录下自动创建一个与备份库同名的文件夹,还原时要在路径中加上这个文件夹,具体请看下面示例。)

示例:

  • 开启数据库服务

  • 在终端中输入

    mongorestore -h 127.0.0.1 -d mymongobu --dir /usr/local/MongoDB/bu/mymongo

    注:

    备份的地址是/usr/local/MongoDB/bu

    mymongo是备份时自动创建的与库名相同的文件夹,还原时需要加上后面的/mymongo

  • 出现如下信息则还原成功

cbowendeMacBook-Pro:~ cbowen$ mongorestore -h 127.0.0.1 -d mymongobu --dir /usr/local/MongoDB/bu/mymongo
2019-10-29T16:03:32.386+0800 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2019-10-29T16:03:32.386+0800 building a list of collections to restore from /usr/local/MongoDB/bu/mymongo dir
2019-10-29T16:03:32.390+0800 reading metadata for mymongobu.singer from /usr/local/MongoDB/bu/mymongo/singer.metadata.json
2019-10-29T16:03:32.390+0800 reading metadata for mymongobu.students from /usr/local/MongoDB/bu/mymongo/students.metadata.json
2019-10-29T16:03:32.440+0800 restoring mymongobu.singer from /usr/local/MongoDB/bu/mymongo/singer.bson
2019-10-29T16:03:32.498+0800 no indexes to restore
2019-10-29T16:03:32.498+0800 finished restoring mymongobu.singer (15 documents)
2019-10-29T16:03:32.498+0800 restoring mymongobu.students from /usr/local/MongoDB/bu/mymongo/students.bson
2019-10-29T16:03:32.500+0800 restoring indexes for collection mymongobu.students from metadata
2019-10-29T16:03:32.538+0800 finished restoring mymongobu.students (9 documents)
2019-10-29T16:03:32.538+0800 done

3.3、集合的备份与还原

# 备份单个集合
mongodump -h dbhost -d dbname -c collectionname -o dbdirectory # 还原单个集合
mongorestore -h dbhost -d dbname --dir dbdirectory

这里还是要注意,备份时的dbdirectory为目录,而还原时的dbdirectory要指定到具体的.bson文件。

示例:

# 备份集合
mongodump -h 127.0.0.1:27017 -d mymongo -c singer -o /usr/local/MongoDB/bu/collection #还原集合
mongorestore -h 127.0.0.1:27017 -d mymongobu --dir /usr/local/MongoDB/bu/collection/mymongo/singer.bson

【MongoDB详细使用教程】五、MongoDB的数据库管理的更多相关文章

  1. 【MongoDB详细使用教程】二、MongoDB基本操作

    目录 数据类型 数据库操作 集合操作 数据操作 增 查 改 修改整行 修改指定字段的值 删 数据类型 MongoDB常见类型 说明 Object ID 文档ID String 字符串,最常用,必须是有 ...

  2. 【MongoDB详细使用教程】四、python操作MongoDB

    目录 1.安装pymongo 2.连接数据库 3.操作数据库 3.1.查 3.2.增 3.3.改 3.4.删 使用第三方库pymongo来实现python对MongoDB的操作 pymongo官方文档 ...

  3. 【MongoDB详细使用教程】三、高级查询

    目录 1.使用比较运算符查询 2.使用关键字查询 2.1.in/not in 关键字 2.2.size 关键字 2.3.exists 关键字 2.4.or 关键字 3.模糊查询 4.查询结果排序 5. ...

  4. MongoDb 快速入门教程

    文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...

  5. 在.Net Core中使用MongoDB的入门教程(一)

    首先,我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For .Net的驱动是支持.Net Core 2.0的. 所以,在我们安装好了MangoDB后,就可以开始MangoDB的.N ...

  6. 【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)

    前段时间,学习了一下mongodb,在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全.可惜在找教程的时候,发现很难找到比较详细的教程,也 ...

  7. Mongodb for PHP教程之数据操作

    Mongodb的常用操作 参看手册,php官方的http://us2.php.net/manual/en/mongo.manual.php 也可以参看mongodb官方的教程 数据库连接 ⑴默认格式 ...

  8. MongoDB Shell基本操作(五)

    官网文档:https://docs.mongodb.com/ 1. 创建数据库 #如果数据库不存在,则创建数据库,否则切换到指定数据库 use DATABASE_NAME 示例: use runoob ...

  9. Mongodb Manual阅读笔记:MongoDB教程

    Mongodb教程的说明,可以当手册用 Getting Started Install MongoDB on Linux Systems Install MongoDB on Red Hat Ente ...

随机推荐

  1. Beescms_v4.0 sql注入漏洞分析

    Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...

  2. xshell调用xmanager,打开linux远程桌面

    xshell输入命令:gnome-panel

  3. linux虚拟化简介

    为跨平台而生 在计算机发展的早期,各类计算平台.计算设备所提供的接口.调用方式纷繁复杂,没有像今天这样相对统一的标准.由于需要适配不同的平台,需要写很多繁琐的兼容代码,这无形中给开发者带来了很大的不便 ...

  4. Educational Codeforces Round 72 (Rated for Div. 2)

    https://www.cnblogs.com/31415926535x/p/11601964.html 这场只做了前四道,,感觉学到的东西也很多,,最后两道数据结构的题没有补... A. Creat ...

  5. python的元组存储的实质和多元赋值

    python中有一种赋值机制即多元赋值,采用这种方式赋值时,等号两边的对象都是元组并且元组的小括号是可选的.通常形式为 x, y, z = 1, 2, 'a string' 等同于 (x, y, z) ...

  6. 死磕 java同步系列之Phaser源码解析

    问题 (1)Phaser是什么? (2)Phaser具有哪些特性? (3)Phaser相对于CyclicBarrier和CountDownLatch的优势? 简介 Phaser,翻译为阶段,它适用于这 ...

  7. [Vjudge][POJ][Tony100K]搜索基础练习 - 全题解

    目录 POJ 1426 POJ 1321 POJ 2718 POJ 3414 POJ 1416 POJ 2362 POJ 3126 POJ 3009 个人整了一些搜索的简单题目,大家可以clone来练 ...

  8. Scala 多继承问题

    多继承问题: object LoadIssueDemo extends App { import java.io.PrintWriter trait Logger { def log(msg: Str ...

  9. Redis分片机制

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 前两篇文章对Redis主从复制和主从切换的知识点进行了介绍,但是也很明显的有一点小弊端: 需要定时进行主从复制 ...

  10. Mysql数据类型TINYINT(1)与BOOLEAN踩坑记

    熟悉Mysql的同学应该都知道,Mysql查询的boolean结果将输出为0或者1. 比如: ; 其输出结果为1. 查阅mysql官方文档仅找到如下描述: 11.10 Using Data Types ...