您的位置:首页 > 数据库 > Mongodb

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

2017-03-23 15:12 246 查看

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

安装

使用SecureCRT连接Centos,连接成功后进入目录cd /home/nguser/,新建目录用于存放mongodb目录文件;



运行rz上传安装包文件到/home/nguser/mongodb/目录并解压 tar -zxvf mongodb-linux-x86_64-amazon-3.4.1.tgz;



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



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



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



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

配置

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

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

vim mongodb.conf


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

使用如下命令重新启动mongodb服务,使配置生效;

./mongod –config /home/nguser/mongodb/mongodb-linux-x86_64-amazon-3.4.1/bin/mongodb.conf

验证服务是否启动成功;

设置开机启动

添加mongodb系统服务,执行命令:vim /etc/rc.d/init.d/mongod;

打开编辑器,复制以下内容,保存:

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


添加脚本执行权限;

chmod +x /etc/rc.d/init.d/mongod


启动mongodb,如下图所示说明启动成功;



设置服务开机启动,命令如下:

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)

新建Database:ETL;



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



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



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



PS:注意防火墙设置

firewall-cmd --zone=public --add-port=27017/tcp --permanent


systemctl restart firewalld.service


注意当开启验证后,停止mongodb服务时会提示Unauthorized,如图:



解决方案:

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


未完待续



后续章节我们将一起探讨mongodb备份与还原,集群部署等,敬请期待…

author:杨大山      qq技术交流群:242573682
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nosql mongodb 数据库