zoukankan      html  css  js  c++  java
  • 为MongoDB加集群验证的关键点

    1.确保集群搭建完成,状态正常

    2.增加安全认证机制KeyFile

    1)集群之间的安全认证
    集群之间的复制增加keyFile认证

    mkdir   /home/mongodb/data/keyfile
    openssl rand -base64 745 >  /home/mongodb/data/keyfile/mongodb-keyfile
    
    chmod 600  /home/mongodb/data/keyfile/mongodb-keyfile

    将该key放到集群中机器的每一台上,记住必须保持一致,权限设置成600;

    2)修改配置文件

    vim  mongodb/mongod.conf
    security:
      authorization: enabled
      keyFile: "/home/mongodb/data/keyfile/mongodb-keyfile"
      clusterAuthMode: "keyFile"

    ##注意缩进

    3)主库配置用户

    也可后面配置,开启keyfile认证就默认开启了auth认证了,为了保证后面可以登录,我提前创建了用户:

    先创建管理员账户
    
    db.createUser( 
    
    { 
        user:"admin",  
        pwd:"123456", 
        roles:[{role:"userAdminAnyDatabase",db:"admin"}] 
    } 
    ); 
    
    db.createUser( {
     user: "root",
     pwd: "123456",
     roles: [ { role: "root", db: "admin" } ]
     });
    
    #认证用户
    db.auth("admin","123456")
    db.auth("root","123456")

    4)重启MongoDB并进入
    重新启动mongodb,记住重新启动时候,keyfile的指定如果没有在配置文件中配置,就必须启动时候使用参数keyfile指定,关闭顺序注意下,mongodb集群有自动切换主库功能,如果先关主库,主库就切换到其它上面去了,这里预防主库变更,从库关闭后再关闭主库。

    登录MongoDB进行测试:
     ./mongodb/bin/mongo  192.168.254.110:27017   -u root -p 123456 
    
    查看下集群的状态是否正常:
    rs.status()

    3.创建用户和用户数据库

    1)启动认证

    开启了安全认证就可以开始对每个数据库进行安全认证了,首先给用户创建一个数据库:

    test_set:PRIMARY> use wisdom_doc
    switched to db wisdom_doc
    ##mongodb创建数据库直接use即可,此时show dbs是看不到该库的,需要插入一条数据才会现实出来,这里不演示;

    2)创建用户数据库的用户:

    db.createUser(
      {
        user: "rongda",
        pwd: "a1234456",
        roles: [ { role: "readWrite", db: "wisdom_doc" } ]
      }
    );

    ##创建完成会显示成功,可以用show  users;查看所有用户验证用户是否存在;


    ##
    关于用户可以赋予的权限,请看

    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

     

    3) 验证用户登录

    ./mongodb/bin/mongo  192.168.254.110:27017/wisdom_doc   -u rongda -p a1234456

    进入到MongoDB数据库后,可以查看该库下的所有集合

    show collections;
  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/llddhh/p/14389247.html
Copyright © 2011-2022 走看看