Linux上安装MongoDB
MongoDB在Windows上的安装过程整体上来说并不难,网上的资料也比较多,这里我就不介绍了,我主要说下如何在Linux环境下安装MongoDB。
环境:
CentOS 7 MongoDB 3.4.9
下载MongoDB
首先去MongoDB官网下载MongoDB,地址https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz。将下载的文件放到/opt目录下。
解压
解压下载到的tgz文件,并给文件夹重命名为mongodb,然后创建db、logs目录分别用来存放数据和日志。如下:
配置
进入到bin目录下,编辑mongodb.conf文件,内容如下:
dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
执行结果如下:
测试
做完这一切之后,我们就可以启动MongoDB了,还是在bin目录下,执行./mongod -f mongodb.conf
命令表示启动MongoDB,然后执行mongo
命令表示表示进入到MongDB的控制台,进入到控制台之后,我们输入db.version()
命令,如果能显示出当前MongoDB的版本号,说明安装成功了。如下:
默认情况下,连接地址是127.0.0.1:27017,连接的数据库是test数据库,我们也可以手动指定连接地址和连接的数据库:
mongo 127.0.0.1:27017/admin
此时连接成功之后,输入db命令,我们可以看到当前连接的数据库是admin。
配置开机启动
我们也可以配置开机启动,编辑/etc/rc.d/rc.local文件,如下:
配置完成之后自行关机重启测试。
配置环境变量
每次都要进入到安装目录中去输入命令,麻烦,我们直接配置环境变量即可,编辑当前用户目录下的.bash_profile文件,如下:
关闭MongoDB服务
使用db.shutdownServer();命令可以关闭到MongoDB服务,但是这个命令的执行要在admin数据库下,所以先切换到admin,再关闭服务,完整运行过程如下:
安全管理
上面我们所做的所有的操作都没有涉及到用户,我们在用Oracle、MySQL或者MSSQL时都有用户名密码需要登录才可以操作,MongoDB中当然也有,但是需要我们手动添加。在添加之前,我们先来说说MongoDB中用户管理的几个特点:
1.MongoDB中的账号是在某一个库里边进行设置的,我们在哪一个库里边进行设置,就要在哪一个库里边进行验证。 2.创建用户时,我们需要指定用户名、用户密码和用户角色,用户角色表示了该用户的权限。
OK,假设我给admin数据库创建一个用户,方式如下:
use admin
db.createUser({user:"root",pwd:"123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
user表示用户名,pwd表示密码,role表示角色,db表示这个用户应用在哪个数据库上。用户的角色,有如下几种: 1.Read:允许用户读取指定数据库 2.readWrite:允许用户读写指定数据库 3.dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile 4.userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 5.clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 6.readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 7.readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 8.userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 9.dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 10.root:只在admin数据库中可用。超级账号,超级权限
用户创建成功之后,我们关闭掉当前MongoDB服务实例,然后重新启动新的实例,启动方式如下:
mongod -f /opt/mongodb/bin/mongodb.conf --auth
启动成功之后,如果我们直接执行如下命令,会提示没有权限:
show dbs
执行结果如下:
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
此时我们需要先进入到admin数据库中,然后授权,操作如下:
use admin
db.auth("root","123")
auth方法执行结果返回1表示认证成功。然后再去执行show dbs就可以看到预期结果了。此时我再在sang库下创建一个只读用户,如下:
use sang
db.createUser({user:"readuser",pwd:"123",roles:[{role:"read",db:"sang"}]})
创建成功之后,再按照上面的流程进入到sang库中,使用readuser用户进行认证,认证成功之后一切我们就可以在sang库中执行查询操作了,步骤如下:
use sang
db.auth("readuser","123")
做完这两步之后再执行查询操作就没有任何问题了,但是此时如果执行插入操作会提示没有权限,那我们可以创建一个有读写功能的用户执行相应的操作,这里就不再赘述。
好了,MongoDB的安装我们就说这么多,有问题欢迎留言讨论。
- sublime学习笔记
- Java程序员必须掌握的常用Linux命令。
- SAMP论文学习
- IEEE Trans 2009 Stagewise Weak Gradient Pursuits论文学习
- async和enterproxy控制并发数量
- 从零开始写项目终极【维护网站、修复Bug】
- Redis 数据结构与内存管理策略(下)
- Redis 数据结构与内存管理策略(上)
- Servlet第三篇【request和response简介、response的常见应用】
- Java 10的10个新特性,将彻底改变你写代码的方式!
- JDK9新特性实战:简化流关闭新姿势。
- Druid数据库连接池就是这么简单
- 使用 github 做代码管理,知道这些就够了
- 二叉树就这么简单
- 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 数组属性和方法
- PLSQL-简单的语句块及变量的定义
- Python 技术篇-使用PIL库等比例压缩、缩小图片
- linux 安装并配置zsh
- 听音乐不过瘾?自制一个音乐播放器!【附带函数源码】
- Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法
- Linux 文件隐藏权限
- 还在用print()查找错误?日志消息这顿排骨它不香嘛?
- CNS图表复现02—Seurat标准流程之聚类分群
- Python 技术篇-莉莉机器人api调用方法,实例演示。免费的机器人
- Hugo Travis 完结!
- 【Python】秀儿!两行代码制作你的专属动态二维码
- Windows 技术篇-网卡物理(MAC)地址查看方法
- Go使用工厂方法实例结构体
- Java交互界面实现计算器开发设计【附函数源码】
- Python 技术篇-读取本地文件的字节数