美文网首页码神之路:数据库篇工具癖程序员
CentOS7最小化安装后要做的事(12):MongoDB安装与

CentOS7最小化安装后要做的事(12):MongoDB安装与

作者: 姬艾思 | 来源:发表于2018-03-23 14:17 被阅读227次

    考虑到《可能是目前最详细简明的CentOS7安装与管理教程》一文太长,以及简书目前不支持导航目录,阅读起来过于不便,故对其分解成《CentOS7最小化安装后要做的事》系列,方便以后有针对性的丰富内容。

    MongoDB:

    MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    安装 MongoDB:

    首先创建源,创建 repo文件,下面我们 官方安装方法安装:

    # 在/etc/yum.repos.d/目录下创建文件mongodb-org-3.6.repo,它包含MongoDB仓库的配置信息,内容如下:
    # 复制代码, 代码如下:
    [mongodb-org-3.6]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/  
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
    # $releasever 为你的Linux发行版本
    

    yum 安装 MongoDB

    yum install -y mongodb-org-3.6.3
    

    启动MongoDB
    systemctl start mongod

    设置开机自启
    systemctl enable mongod

    配置MongoDB:

    MongoDB默认是不开启权限认证的,但自从上次MongoDB爆发了赎金门事件,还是很有开启MongoDB的权限认证的必要。

    开启认证也很简单,在配置文件(默认是/etc/mongodb.conf)里面进行配置即可:

    security:
      authorization: enabled
    #2.6前的版本为auth = true
    

    重启数据库后,再次进入数据库进行插入等操作,就会提示错误了。这说明权限认证生效了,未认证通过的用户再也不能使用数据库了(即使能进mongo shell)。

    这时我们需要一个“超级管理员”来创建、分配管理员给指定数据库。

    MongoDB的开发者早已经想到了这一步。MongoDB自带一个数据库叫admin,这个数据库用来管理所有数据库的,类似于MySQL的mysql数据库。如果这个数据库的管理员账户还没有建立,那么任何人都可以在admin数据库里面新建管理员账户。

    --进入admin数据库
    use admin;
    --运行db.createUser方法新建用户
    db.createUser({user: '超级管理员用户名', pwd: '密码', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})
    

    createUser方法必须传入一个有user(用户名)、pwd(密码),roles(角色)三个属性的JSON对象。不同roles拥有不同权限,比如:数据库读、数据库写、数据库用户管理等等,其中角色userAdminAnyDatabase 可以看做是“超级管理员”,我们建立该角色的用户后,就可以用这个用户来管理其他用户了。

    MongoDB内置角色:

    (1).数据库用户角色
    针对每一个数据库进行控制。
    read :提供了读取所有非系统集合,以及系统集合中的system.indexes, system.js,system.namespaces
    readWrite: 包含了所有read权限,以及修改所有非系统集合的和系统集合中的system.js的权限。
    (2).数据库管理角色
    每一个数据库包含了下面的数据库管理角色。
    dbOwner:该数据库的所有者,具有该数据库的全部权限。
    dbAdmin:一些数据库对象的管理操作,但是没有数据库的读写权限。(参考:http://docs.mongodb.org/manual/reference/built-in-roles/#dbAdmin
    userAdmin:为当前用户创建、修改用户和角色。拥有userAdmin权限的用户可以将该数据库的任意权限赋予任意的用户。
    (3).集群管理权限
    admin数据库包含了下面的角色,用户管理整个系统,而非单个数据库。这些权限包含了复制集和共享集群的管理函数。
    clusterAdmin:提供了最大的集群管理功能。相当于clusterManager, clusterMonitor, and hostManager和dropDatabase的权限组合。
    clusterManager:提供了集群和复制集管理和监控操作。拥有该权限的用户可以操作config和local数据库(即分片和复制功能)。
    clusterMonitor:仅仅监控集群和复制集。
    hostManager:提供了监控和管理服务器的权限,包括shutdown节点,logrotate, repairDatabase等。
    备份恢复权限:admin数据库中包含了备份恢复数据的角色。包括backup、restore等等。
    (4).所有数据库角色
    admin数据库提供了一个mongod实例中所有数据库的权限角色:
    readAnyDatabase:具有read每一个数据库权限。但是不包括应用到集群中的数据库。
    readWriteAnyDatabase:具有readWrite每一个数据库权限。但是不包括应用到集群中的数据库。
    userAdminAnyDatabase:具有userAdmin每一个数据库权限,但是不包括应用到集群中的数据库。
    dbAdminAnyDatabase:提供了dbAdmin每一个数据库权限,但是不包括应用到集群中的数据库。
    (5). 超级管理员权限
    root: dbadmin到admin数据库、useradmin到admin数据库以及UserAdminAnyDatabase。但它不具有备份恢复、直接操作system.*集合的权限,但是拥有root权限的超级用户可以自己给自己赋予这些权限。
    (6). 备份恢复角色:backup、restore。
    (7). 内部角色:__system

    十分复杂,为了简单起见,就讲其中两个:read、readWrite也就是常用的读数据库和读写数据库。

    这里有一个不大不小的坑,就是你要给其他数据库创建用户,都必须先到admin数据库,认证刚才新建的那个admin用户,然后再切换到其他数据库才能建立用户。

    建立了admin用户之后,还必须先进入admin数据库进行认证:

    步骤如下:

    use admin;
    db.auth('超级管理员用户名', '密码')
    

    然后切换到数据库a,给数据库a创建用户

    use 数据库a;
    db.createUser({user: '用户a', pwd: '密码', roles: [{role: 'readWrite', db: '数据库a'}]})
    db.auth('用户a', '密码')
    

    现在,就可以使用用户a管理数据库a,进行正常的读写了。

    开启远程登录:

    在配置文件(默认是/etc/mongodb.conf)中,注释掉bindIp,或者将127.0.0.1改为0.0.0.0

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

    最后是MongoDB图形化管理工具:

    推荐使用Studio 3T(前身是robomongo),虽然收费,但是基础功能免费,足够了。

    相关文章

      网友评论

        本文标题:CentOS7最小化安装后要做的事(12):MongoDB安装与

        本文链接:https://www.haomeiwen.com/subject/jycxcftx.html