MongoDB(一)环境搭建与初始配置

前言

  最近的项目中需要用到MongoDB,所这段时间需要学习知道怎么去使用这个数据库。

  这里我先简单的介绍一下什么是MongoDB,后面还会详细的介绍:

    MongoDB 是一个面向文档的通用型数据库,拥有 MySQL 等关系型数据库常用功能。除了能够创建、读取、更新和删除数据之外,也还提供了一些拓展的功能,

    如索引、聚合、特殊的集合类型(如时间有限的集合)、分片和集群,是一个易于使用、便于拓展的数据库。也正因为它的这些特性,也是前端童鞋使用得比较

    多的一种数据库。  

一、在CentOS中安装MongoDB

1.1、简介

  MongoDB 有两个版本类型:开源社区版(Community Edition)和企业版(Enterprise),功能上两者并没有什么区别,企业版主要是提供了更多的管理服务,

  有更高级的安全性,如LDAP 身份验证、Red Hat 标识管理认证。这里主要讨论开源社区版。官方提供了mongodb-org软件包,其中包含了 MongoDB 几乎所有

  所需功能,使用系统自带的yum软件包管理器可以非常方便地进行安装。

1.2、配置资源库

  为了确保系统能直接从指定地址获取软件包,创建/etc/yum.repos.d/mongodb-org-3.4.repo文件,填入如下内容配置 MongoDB 资源库:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

  执行安装命令

sudo yum install -y mongodb-org

二、启动

2.1、简介

  MongoDB 安装完后,默认会生成很多命令,如 mongo、mongod、mongodump、mongooplog等。

  其中比较常用的有 mongod(用于启动 MongoDB 服务器)、mongo(提供强大的类似 javascript 环境的 mongo shell 交互式功能)。

  如果简单地通过执行 mongod 命令来启动 MongoDB 服务器,则无法使它在后台运行,控制台关了服务也自动停止了,也无法快速启动指定配置的服务,更不能做

  到开机自启动。Centos 提供了 service 命令来帮我们快速地启动一些服务,不过它其实就是跑一个指定的 shell 脚本。当我们输入 service 命令时,linux 会去 

/etc/rc.d/init.d 下去找这个脚本运行,init.d 下面放了很多这种脚本(如常见的 httpd)。而当我们需要设置开机自启动时也可以通过 chkconfig 命令来设置

  这些系统服务开机时启动。

2.2、启动命令及配置开机启动

  1)启动命令

  MongoDB 安装完后默认会在 /etc/rc.d/init.d 下生成启动脚本 mongod,所以我们可以通过下面命令启动 MongoDB 服务器:

sudo service mongod start

  2)如需要设置开机启动可以执行下面脚本

sudo chkconfig mongod on

  3)查看是否启动

  方法一:

    使用命令:netstat -lanp |grep ""27017" 

  方式二:

    访问 /var/log/mongodb/mongod.log 日志文件,如果看到 [initandlisten] waiting for connections on port <port> 的日志则说明启动成功。 

三、MongoDB设置

3.1、MongoDB配置文件  

  每个 mongod 服务器进程都需要有自己的数据存储路径,默认是 /var/lib/mongo。如果需要启动多个服务器进程,则可以指定不同的路径来启动。

  启动的默认配置文件是 /etc/mongod.conf。我们可通过这个配置文件实现所需配置:官方配置文件详解

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
 bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.
 
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

  注意:

    有一个需要注意的配置是 net 下的 bingIp,如果设置 bindIp: 127.0.0.1 则外网机器无法直接连接此服务器进程。

四、认证授权(MongoDB创建用户个库)

4.1、简介

  MongoDB 服务器进程默认启动后,并无任何认证机制,即任何用户都可随意连接数据库进行读写操作。MongoDB 有个比较特殊的数据库 admin,

  专门用来存储数据库管理员信息的。在 MongoDB 里是有不同的角色的,每种角色只能拥有相应的权限,用户也能自定义角色。官方详解

4.2、认证授权步骤

  为了启用认证机制,我们需要创建两个用户:拥有 userAdminAnyDatabase 角色的用户、对应数据库读写权限 readWrite 的用户,如:  

  先启动不需要认证的服务器进程,用 mongo shell 直接进入配置:

  1)添加一个超级用户“root”

    步骤一:打开Mongo shell  

    mongo

    步骤二:进入admin表

    use admin

    步骤三:创建一个超级管理账户

    步骤三:查看用户是否创建成功

    表示创建成功了!

五、MongoDB权限

  1)数据库用户角色:read、readWrite

    read:允许用户读取指定数据库      readWrite:允许用户读写指定数据库

  2)数据库管理角色:dbAdmin、dbOwner、userAdmin

    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile  

    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户   

  3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限

  4)备份恢复角色:backup、restore  

  5)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限      readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限      userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限      dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 

  6)超级用户角色:root    

.    root:只在admin数据库中可用。超级账号,超级权限

    注意:这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

日志采集技术笔记

使用Linux的rename机制保证文件写入要么成功,要么失败,绝对不能出现写了一半的情况。

3565
来自专栏蓝天

Solution: AC_CONFIG_MACRO_DIR conflicts with ACLOCAL_AMFLAGS

.ibtoolize: AC_CONFIG_MACRO_DIR([./aclocal]) conflicts with ACLOCAL_AMFLAGS=-I ...

871
来自专栏应用案例

Linux常用软件安装总结

首先说xshell一个好用的功能,如果你同时要管理几台一样的服务器组成的集群,一台一台操作很麻烦,可以使用xshell菜单栏——工具——勾选发送键输入到所有会话...

3358
来自专栏张戈的专栏

Linux服务器的进程查看命令详解

Linux 服务器正常启动后,提供服务时会调用程序,占用进程。这时候我们如何查看系统中有哪些进程在被调用呢?我们可以通过以下命令来查看。 一、ps 命令 ps ...

3.5K9
来自专栏PHP实战技术

20条Linux命令面试问答

问:1 如何查看当前的Linux服务器的运行级别?   答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。 ...

3438
来自专栏前端安全

浅谈Ajax跨域

如果我们前端页面的url和我们要提交的后端url存在跨域问题时,我们该如何解决呢?

2.4K15
来自专栏栗霖积跬步之旅

异常:org.springframework.http.converter.HttpMessageNotReadableException

spring(springboot、springmvc)出现标题的异常一般是由于controller的入参失败引起的。

3774
来自专栏魏艾斯博客www.vpsss.net

lnmp 环境 ftp 客户端看不到文件

3802
来自专栏小樱的经验随笔

一个很easy的脚本--php获取服务器端的相关信息

存档: 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="...

3938
来自专栏转载gongluck的CSDN博客

搭建 FTP 文件服务

安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 apt-get 安装 vsftpd: sudo apt-get in...

1K7

扫码关注云+社区

领取腾讯云代金券