MongoDB安装、配置入门(Linux篇)

MongoDB安装、配置入门(Linux篇)


简介

MongoDB是一个基于分布式文件存储的数据库,非关系型数据库(NOSQL);它具有快速、高拓展性、FailOver机制、Json格式存储等优势;

1、文档

文档是MongoDB中数据的基本单位,类似关系型数据库中的行(但是比行复杂),多个键及其关联的值有序的放在一起就构成了文档;

2、集合(Collections)

结合就是一组文档,类似于关系型数据库中的表;集合是无模式的,集合中的文档可以是各种格式结构的,非常灵活;从开发者的角度可以把集合划分为子集合;

3、数据库(database)

MongoDB中多个文档组成集合,多个集合组成数据库;一个MongoDB实例可以承载多个数据库,他们之间可相互独立,每个数据库都有独立的权限控制;MongoDB默认存在一下数据库:

  • Admin数据库:权限数据库,在创建用户的时候如果将用户添加到admin数据库中,那么该用户就自动继承了所有数据库的权限;建议不要使用admin数据库存储业务数据,最好创建新的数据库;

  • Local数据库:该数据库不会被负责,只会在本地存储数据,即local数据库里的内容不会同步到副本集里的其他节点上去;重要数据切勿存储再local数据中,否则当一个节点故障时,存储在local里的数据就会丢失;

  • Config数据库:当MongoDB使用分片模式时,config数据库在内部使用,用于保存分片的信息;

官网:http://www.mongodb.org/
学习网站:http://www.runoob.com/mongodb


数据模型

一个MongoDB实例可以包含一组数据库,一个Database可以包含一组Collection(集合),一个集合可以包含一组Document,一个Document包含一组field(字段),每一个字段都是一个key/value pair;


下载(DownLoad)

  • 准备工作:一台安装了CentOS系统的虚拟机、SecureCRT(要求系统先安装lrzsz用于文件上传下载)或xshell&xftp;

  • MongoDB下载地址:https://www.mongodb.com/downloads


安装

  1. 使用SecureCRT连接Centos,连接成功后进入目录cd /home/nguser/,新建目录用于存放mongodb目录文件;
  2. 运行rz上传安装包文件到/home/nguser/mongodb/目录并解压 tar -zxvf mongodb-linux-x86_64-amazon-3.4.1.tgz;

  3. 新建两个文件夹分别用于存放数据库文件和日志文件,logs和db;

  4. 赋予文件夹读取、写入、执行权限;

  5. 指定数据库目录和日志文件目录,启动mongodb,验证服务是否安装成功;

    输入命令lsof -i :27017 ,监听端口已经在使用中,说明启动已经完成


配置

上面已经能够将mongodb成功安装、部署、启动,但是不难发现mongodb服务启动相对还是比较麻烦的,是否可以将数据文件目录、日志目录、服务端口、是否开启认证等配置统一放到一个配置文件里进行配置,并能够通过输入简单的service mongo start/stop来实现服务的启动与停止,答案是肯定的。

  1. 进入目录 cd /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/,执行命令:
    vim mongodb.conf

  2. mongodb命令参数请参考博客:http://blog.csdn.net/fdipzone/article/details/7442162

  3. 使用如下命令重新启动mongodb服务,使配置生效;
    ./mongod –config /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongodb.conf

  4. 验证服务是否启动成功;


设置开机启动

  1. 添加mongodb系统服务,执行命令:vim /etc/rc.d/init.d/mongod;
  2. 打开编辑器,复制以下内容,保存:
  ulimit -SHn 655350
          #!/bin/sh
          # chkconfig: - 64 36
          # description:mongod
          case $1 in
          start)
          /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongod  --maxConns 20000  --config /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongodb.conf
          ;;
         stop)
         /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
         ;;
         status)
         /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
         ;;
        esac
  1. 添加脚本执行权限;
chmod +x /etc/rc.d/init.d/mongod
  1. 启动mongodb,如下图所示说明启动成功;
  2. 设置服务开机启动,命令如下:
chkconfig mongod on

角色

mongodb的权限是通过角色来定义的,系统内置了几类角色,同时用户也可以自己定义角色,一般情况下系统默认的角色已能够U满足我们的需求了;

  • Database User Roles:针对非系统数据库和部分系统表的用户角色组

    每个数据都包含以下客户角色:read、readWrite;
  • Database Administration Roles:数据库管理角色,可以操作所有数据库;

    每个数据库都包含以下管理角色:dbAdmin(数据库管理员)、dbOwner(数据库所有者可以执行数据库所有管理的操作,该角色合并了readWrite\dbAdmin\userAdmin角色的权限)、userAdmin(用户管理员,具有创建和修改角色和用户的权限);
  • Cluster Administration Roles:管理员簇针对整个系统进行管理,包含角色:clusterAdmin(集群管理员)、clusterManager(集群管理者)、clusterMonitor(集群监视者)、hostManager(主机管理者)

  • Backup and Restoration Roles:备份还原角色组,包含角色:backup(备份)、restore(还原)

  • All-Database Roles:所有数据库角色,跟超管差不多,包含角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  • Superuser Roles:超级管理员

  • Internal Role:内部角色,包含角色:__system(系统角色)

角色相关的命令参考:[https://docs.mongodb.com/manual/reference/method/js-role-management/](https://docs.mongodb.com/manual/reference/method/js-role-management/)


用户

在了解完角色以后,我们就可以结合不同的应用场景创建具有相关权限的用户了,参考如下:

use admin//系统管理员
db.createUser({user:"admin",pwd:"admin",roles:["readWriteAnyDatabase","dbAdminAnyDatabase","clusterAdmin"]})//数据库管理员
db.createUser({user:"user",pwd:"user",roles:["userAdminAnyDatabase"]})//用户管理员,用来增加和删除用户
db.createUser({user:"etl",pwd:"etl",roles:[{role:"readWrite",db:"etl"}]})//普通用户

用户相关的命令参考:https://docs.mongodb.com/manual/reference/method/js-user-management/


开启认证(Auth)

  1. 新建Database:ETL;


2. 新建用户etl,赋予etl用户操作ETL数据库的读写权限;


3. 修改mongodb配置文件,开启认证;


4. 重启服务,使用etl用户测试连接成功与否;

PS:注意防火墙设置

firewall-cmd --zone=public --add-port=27017/tcp --permanent
systemctl restart firewalld.service
  1. 注意当开启验证后,停止mongodb服务时会提示Unauthorized,如图:

解决方案:

db.grantRolesToUser("admin", [{role: "hostManager", db: "admin"}])

未完待续


后续章节我们将一起探讨mongodb备份与还原,集群部署等,敬请期待…
author:杨大山 qq技术交流群:242573682

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值