MongoDB权威指南学习笔记(4)--应用管理和服务器管理
时间:2022-07-25
本文章向大家介绍MongoDB权威指南学习笔记(4)--应用管理和服务器管理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Mongo
应用管理和服务器管理
数据管理
配置身份验证
admin和local是两个特殊的数据库,它们当中的用户可对任何数据库进行操作,这两个数据库中的用户可作为超级用户
在开启安全检查的数据库呗启动前,应该至少添加一个管理员用户
添加一名管理员用户
use admin
db.addUser("root","123456")
切换到test数据库,并增加两个用户
use test
db.addUser("test_user","123456")
// 创建只读权限用户
db.addUser("read_user","123456",true)
- 运行addUser时,必须拥有相应数据库的写入权限
- addUser的第三个参数为readOnly,设置为true时,为只读
使用–auth参数重启服务器,以启用安全检查
身份验证的工作原理
数据库中的用户时作为文档呗存储在system.users集合中的。
想要删除一个用户,只需要从集合中删除这一用户的文档
db.system.users.remove({
"user":"test_user"
})
建立和删除索引
在独立的服务器上建立索引
在独立的服务器上,可在空闲时间于后台建立索引,在后台建立索引,可利用backgroud为true参数运行命令
db.foo.ensureIndex(
{
"somefield":1
},
{
"backgroud":true
}
)
在前台建立索引要比在后台建立索引耗时少,但在建立索引期间会锁定数据库
在发副本集上建立索引
在主节点中建立索引,然后等待其呗复制到其他备份节点即可。
但是对于较大的集合,推荐的方式是:
- 关闭一个备份节点
- 将其作为独立的节点启动
- 在这一服务器上建立索引
- 重新将其作为成员加入副本集
- 对每个备份节点指定同样的操作
对于主节点来说,有两种选择
- 在后台对主节点建立索引
- 关闭主节点,执行上述步骤
在分片集群上建立索引
在分片集群上建立索引。与在副本集中建立索引的步骤相同,不过需要在每个分片上分别建立一次
删除索引
如果不在需要索引,可使用dropIndexes命令并指定索引名来删除索引
db.runCommand({
"dropIndexes”:"foo",
"index":"alpabet"
})
启动和停止mongodb
从命令行启动
配置选项
- –path:指定一个目录为数据目录(默认为/data/db/)
- –port:指定服务器监听的端口号(默认为27017)
- –fork:调用fork创建子进程,在后台运行mongodb
- –logpath:所有输出信息会被发送到指定文件,如果文件不存在,会自动生成,如果存在,会覆盖掉
- –directoryperdb:将每个数据库存放在单独的目录中
- –config 额外加载配置文件,未在命令行中指定的玄仙将使用配置文件中的参数
停止mongodb
最简洁的方法是使用shutdown命令,必须在admin数据库上执行
use admin
db.shutdownServer()
安全性
不要将mongodb服务器直接暴露在外网上,最好设置防火墙,只允许内网地址对mongo的访问
安全性选项;
- –bind_ip:指定mongo监听的端口。
- –nounixsocket:如果不打算使用unix socket进行连接,则可禁用此选项
- noscripting:禁止服务器端JavaScript脚本的运行
注:
- 上述测试在MongoDB 3.4.3-8-g05b19c6中成功
- 上述文字皆为个人看法,如有错误或建议请及时联系我
- 通过使用hint unnest调优sql语句(r4笔记第38天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置
- 极简增强学习新手教程 返回专栏查看评论
- 经典Java面试题收集
- 百度魅族深度学习大赛初赛冠军作品(图像识别.源码)
- easyUI整合富文本编辑器KindEditor详细教程(附源码)
- 经典Java面试题收集(二)
- 使用sqlt手工创建sql_profile(r4笔记第37天)
- 使用ash分析ORA-01652问题(r4笔记第36天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
- 数据结构01 算法的时间复杂度和空间复杂度
- Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
- Spring【依赖注入】就是这么简单
- 数据结构02 线性表之顺序表
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在GitHub上发布一个Python项目需要注意哪些
- CS学习笔记 | 21、反向转发通道的建立
- CS学习笔记 | 22、通过SSH开通通道
- 一文搞懂 java -jar 发生了什么
- 树莓派4裸机基础教程:环境搭建
- Oh! Binlog还能这样用之Canal篇
- docker安装elasticsearch和head插件
- redis学习(十六)
- 商业鬼才教你 策略模式
- 为什么StringBuilder是线程不安全的?
- (四)Hive分区、分桶
- Redis的各种数据类型实践-Set
- 快速学习-RocketMQ权限控制
- 快速学习-RocketMQ DefaultMQProducer
- 快速学习-Jenkins CLI自动补全