【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. JAVA设计模式-动态代理(Proxy)源码分析

    在文章:JAVA设计模式-动态代理(Proxy)示例及说明中,为动态代理设计模式举了一个小小的例子,那么这篇文章就来分析一下源码的实现. 一,Proxy.newProxyInstance方法 @Cal ...

  2. 云原生生态周报 Vol. 21 | Traefik 2.0 正式发布

    作者 | 浔鸣.心水.元毅.源三.衷源 业界要闻 CNCF 计划将 TOC 升至 11 人 技术监督委员会(TOC)是 CNCF 的三大核心管理机构之一,从 2020 年 1 月起,TOC 将从 9 ...

  3. [技术栈]C#利用Luhn算法(模10算法)对IMEI校验

    1.Luhn算法(模10算法) 通过查看ISO/IEC 7812-1:2017文件可以看到对于luhn算法的解释,如下图: 算法主要分为三步: 第一步:从右边第一位(最低位)开始隔位乘2: 第二步:把 ...

  4. mybatis-dynamic-query 3.0 更新

    项目地址: mybatis-dynamic-query 前言 在 2.0 完成对 tk.mapper 集成,为何 mybatis-dynamic-query 选择 tk.mapper 集成, 再 3. ...

  5. java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  6. Git基础概念与Flow流程介绍

    目录 Git相关 基本概念 常见客户端 TortoiseGit Sourcetree Intellij Idea 命令行 常用命令 存储区域 命令之 add & commit &pus ...

  7. VR应用评测 - Luna

    Luna http://store.steampowered.com/app/605770/Luna/ Steam VR 2017年10月发布 | 开发者:Funomena | 好评率92% 一款制作 ...

  8. cat命令显示文件指定行

    cat filename | tail -n 100 显示文件最后100行 cat filename | head -n 100 显示文件前面100行 cat filename | tail -n + ...

  9. 超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?

    作者 | 张晓宇(衷源)  阿里云容器平台技术专家 关注『阿里巴巴云原生』公众号,回复关键词"1010",可获取本文 PPT. 导读:资源利用率一直是很多平台管理和研发人员关心的话 ...

  10. Solidity 编程实例--投票

    Voting 投票 思路是为每张选票创建一个合约,每个投票选项提供一个短名称.合约创建者作为会长将会给每个投票参与人各自的地址投票权. 地址后面的人们可以选择自己投票或者委托信任的代表人替他们投票.在 ...