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;
  • 相关阅读:
    使用jackson解析JSON数据
    ANT配置
    Android Webview 与JS交互
    使用ANT将Android打包成Jar包
    单例模式
    工厂模式
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决
    项目开发中的文档管理结构模板
    高并发的成熟解决方案
    Yaf(Yet Another Framework)用户手册 yii框架手册
  • 原文地址:https://www.cnblogs.com/llddhh/p/14389247.html
Copyright © 2011-2022 走看看