博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB(一)环境搭建与初始配置
阅读量:5880 次
发布时间:2019-06-19

本文共 3870 字,大约阅读时间需要 12 分钟。

前言

  最近的项目中需要用到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 Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/gpgcheck=1enabled=1gpgkey=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 runsprocessManagement:  fork: true  # fork and run in background  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile# network interfacesnet:  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)

 

转载地址:http://skcix.baihongyu.com/

你可能感兴趣的文章
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>
第四十期百度技术沙龙笔记整理
查看>>
推荐系统那点事 —— 基于Spark MLlib的特征选择
查看>>
linux 下RTL8723/RTL8188调试记录(命令行)【转】
查看>>
SpringMVC案例1——对User表进行CRUD操作
查看>>
看雪CTF第十四题
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Maven 传递依赖冲突解决(了解)
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
[Spark][Python]Spark Join 小例子
查看>>