MongoDB快速入门教程(3.1)
3.MongoDB进阶
3.1.权限验证
以下内容适用于Mac系统用户,window系统用户请看后面文档
3.1.1.创建超级管理员用户
默认情况下连接mongodb是不需要用户名和密码的,这样不安全,我们需要进行安全配置,让连接数据库的时候经过认证才能连接
具体配置步骤如下:
1.修改mongodb配置文件,开启安全验证
如果是brew安装的mongodb,mac系统下地址mongodb默认配置文件 /usr/local/etc/mongod.conf,你需要将你的配置文件写成这样:
systemLog:
#日志为文件
destination: file
#日志存放路径
path: /data/mongodb/log/mongo.log
logAppend: true
# 数据库存放路径
storage:
dbPath: /data/mongodb/db/
net:
bindIp: 127.0.0.1
#进程
processManagement:
# 守护进程方式
fork: true
# 开启权限验证
security:
authorization: enabled
上面配置文件中,日志存放路径和数据库存放路径需要存在,也就是说你需要先去把这些文件夹创建好,并且给上读写权限
2.重启mongodb服务
sudo mongod --config /usr/local/etc/mongod.conf
重启服务的时候是需要带上配置文件的,这样才能让你的配置生效,需要注意的是,在配置文件中,我们设置了守护进程的方式(fork: true),这种方式允许服务在后台运行
3.创建超级管理员用户名
首先,运行连接mongodb
mongo
接着,选中数据库
use admin
开始创建用户名
db.createUser({
user:'admin',
pwd:'123456', roles:[{role:'root',db:'admin'}]
})
验证用户名和密码
db.auth("admin", "123456")
上面命令如果返回1 表示验证成功, 0 表示验证失败
如果验证成功,即可正常使用了
show dbs
除了上面通过db.auth来验证超级管理员权限以外,还可以在连接的时候,直接给用户名和密码
mongo admin -u admin -p 123456
3.1.2.创建普通用户
普通用户就是某个数据库的用户,这个用户只有某个数据库的权限
要创建普通用户,你必须具有超级管理员的权限,因此,得先以超级管理员登录进去
mongo admin -u admin -p 123456
接下来,选中你要设置权限的数据库
use nodeing_cms
创建普通用户
db.createUser({user: "nodeing_cms_user", pwd: "nodeing123", roles: [{ role: "dbOwner", db: "nodeing_cms" }]})
3.1.3.windows用户权限验证设置
1.连接mongodb数据库
mongo
2.设置管理员密码
db.createUSer({
user: "admin",
pwd: "123456",
roles: [{role: "root", db: "admin"}]
})
3.修改配置文件,开启权限验证
配置文件位置:在你安装目录下面找,例如我的安装目录在c盘,具体位置如下: C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg
security:
authorization: enabled
4.重启服务
5.连接服务器
mongo admin -u admin -p 123456
螺钉课堂视频课程地址:http://edu.nodeing.com
MongoDB快速入门教程(3.1)的更多相关文章
- MongoDb 快速入门教程
文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...
- MongoDB快速入门教程 (3.2)
3.2.索引 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...
- MongoDB快速入门教程 (4.4)
4.5.Mongoose索引和方法 4.5.1.设置索引 let UserSchema = mongoose.Schema({ sn: { type: Number, // 设置唯一索引 unique ...
- MongoDB快速入门教程 (4.3)
4.3.Mongoose模块化 4.3.1.为什么要进行模块化拆分? 模块化拆分的目的是为了代码的复用,让整个项目的结构更加清晰,举个例子:当数据库中的集合变多的时候,例如有课程.订单.分类.教师等多 ...
- MongoDB快速入门教程 (4.2)
4.2.Mongoose实现增删查改 中文文档地址: https://cn.mongoosedoc.top/docs/guide.html 4.2.1.Mongoose是什么? Mongoose是Mo ...
- MongoDB快速入门教程 (4.1)
4.Mongoose使用 4.1.nodejs操作mongodb 文档地址:http://mongodb.github.io/node-mongodb-native/3.2/tutorials/cru ...
- MongoDB快速入门教程 (3.3)
3.4.聚合 3.4.1.什么是聚合? MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 例如上图 ...
- MongoDB快速入门教程 (2)
2.MongoDB的基本的CRUD操作 2.1.创建文档 在具体操作之前,想要知道有多少数据库,可以执行下面命令 show dbs 在mongodb中,数据库中包含的叫做集合(表),集合中存储的内容叫 ...
- MongoDB快速入门教程 (1)
1.MongoDB初识 1.1.MongoDB是什么? MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于 ...
随机推荐
- Redis 入门到分布式 (五) Redis持久化的取舍和选择
个人博客网:https://wushaopei.github.io/ (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用 ...
- Java实现 蓝桥杯 算法提高 矩阵乘法(暴力)
试题 算法提高 矩阵乘法 问题描述 小明最近刚刚学习了矩阵乘法,但是他计算的速度太慢,于是他希望你能帮他写一个矩阵乘法的运算器. 输入格式 输入的第一行包含三个正整数N,M,K,表示一个NM的矩阵乘以 ...
- Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
765. 情侣牵手 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手. 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起. 一次交换可选择任意两人,让他们站起来交换座位. 人和座位用 0 ...
- Java实现 蓝桥杯 算法训练 画图(暴力)
试题 算法训练 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩 ...
- Java实现 LeetCode 109 有序链表转换二叉搜索树
109. 有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. ...
- Elasticsearch系列---生产集群部署(下)
概要 本篇继续讲解Elasticsearch集群部署的细节问题 集群重启问题 如果我们的Elasticsearch集群做了一些离线的维护操作时,如扩容磁盘,升级版本等,需要对集群进行启动,节点数较多时 ...
- 温故知新-Mysql索引结构&页&聚集索引&非聚集索
文章目录 摘要 索引 索引概述 索引优势劣势 索引结构 BTREE 结构 B+TREE 结构 页 索引分类 索引语法 索引设计原则 聚触索引 & 非聚触索引 你的鼓励也是我创作的动力 Post ...
- EIGRP-16-其他和高级的EIGRP特性-2-非等价负载分担
与大多数内部路由协议不同的是, EIGRP能够将流量负载分到多条非等价路径上,而不仅仅使用去往目的地最近距离的那一条路径.提供这项功能的特性称为非等价负载分担. 非等价负载分担的核心概念是可行后继 ...
- EIGRP-13-弥散更新算法-停滞在活动状态
如果一台路由器参与到了针对某个目的地的弥散计算中(即将相应路由置为活动状态,并发送查询包),它必须首先等待所有邻居都返回响应包,之后它才能执行自已的弥散计算,接着选出新的最优路径,最后开始发送自已的响 ...
- Express4.x之中间件与路由详解及源码分析
Application.use() Application.router() express核心源码模拟 一.express.use() 1.1app.use([path,] callback [, ...