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的安装我们就说这么多,有问题欢迎留言讨论。

本文分享自微信公众号 - 玩转JavaEE(gh_d1ca11234a30)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

在Linux中发现IP地址冲突的方法

Linux 下出现 IP 冲突,是不会像 Windows 那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在 VM 虚拟机里面安装了 4 个 redh...

47470
来自专栏张戈的专栏

Linux系统yum命令安装软件时保留(下载)rpm包

昨天在部署 zabbix 监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用。而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有...

39550
来自专栏张戈的专栏

nginx配置文件参数详解

这年头原创技术博文真心难写,不可能每天都有灵感,也不可能每天都出问题。而且技术教程也非常全面,不管是百度一下,你就知道,还是谷歌一把,你就找到,基本要啥有啥,只...

38760
来自专栏张戈的专栏

Linux下通过rdesktop连接Windows远程桌面

在家手痒,又把本本的系统换成了 Linux。收到公司服务器的报警之后,突然想起需要用 VPN 远程处理。只好又折腾下 linux 下的远程桌面了。 下面简单的记...

64270
来自专栏张戈的专栏

SUSE Linux系统在线安装软件命令zypper参数详解

Linux 系统安装软件,不管是从性能还是从稳定考虑,优先推荐编译安装的方式都是无可厚非的。不过在编译安装的时候,偶尔会提示缺失一些依赖组件,比如 curl-d...

49930
来自专栏张戈的专栏

10个超有趣的Linux命令

本文展示了 10 个有趣的 Linux 动态命令,这些命令和实用功能无关,仅供娱乐!看完此文,你会对 Linux 有个全新的认识,谁说 IT 男就没有屌丝娱乐的...

35460
来自专栏张戈的专栏

Linux下巧用chattr、watch命令的实例

一、起因 前些日子,张戈在日志备份服务器加入了日志压缩的计划任务(详见服务器日志备份超节省空间的思路),结果发现监控总是发来 tar 的报警,提示存在 tar ...

38180
来自专栏人称T客

从无关紧要到不可或缺,这四年Docker经历了什么?

T客汇官网:tikehui 撰文 | 张珅健 Docker容器在今年三月已经进入第四个年头。如果你早些时候注意过Docker的话,就会发现Docker的生态系统...

35760
来自专栏张戈的专栏

教你如何查看Linux的CPU负载

记得博主以前被问到 CPU 负载如何才算高的时候,出过一次糗,具体就不记录了。。。在网上找了一篇比较详细的 Linux 下的 CPU 负载算法教程,科普一下。不...

74460
来自专栏张戈的专栏

Linux操作系统DNS解析(nameserver)监控脚本

一、起因 昨天,开发组兄弟发现 resin 日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态! 这还得了?用户明明支...

50040

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励