zoukankan      html  css  js  c++  java
  • mongodb3.6集群搭建:分片集群认证

    上篇集群已经创建,现在加入认证。

    1. 生成密钥文件
    每个服务器上创建路径: 
    mkdir -p /var/lib/mongo/auth

    生成64字节的密钥文件
    openssl rand -base64 64 > /var/lib/mongo/auth/keyfile.key

    把密钥文件复制到集群中每一个结点上(路由结点,元配置结点,分片结点上都要有这个密钥文件)
    scp /var/lib/mongo/auth/keyfile.key root@node2:/var/lib/mongo/auth
    scp /var/lib/mongo/auth/keyfile.key root@node3:/var/lib/mongo/auth

    把密钥文件的权限设置为600,owner为mongod(启动mongo实例的用户)
    chown -R mongod:mongod /var/lib/mongo/auth
    chmod 600 /var/lib/mongo/auth/keyfile.key
    2. 创建集群用户
    每个结点(每个分片结点,每个路由结点)上都要创建创建admin库的管理员用户
    mongo 127.0.0.1:20000/admin

    db.createUser(
            {
                user  : "admin",
                pwd   : "admin123456",
                roles : 
                [
                    { role : "root", db : "admin" },
                    { role : "clusterAdmin", db : "admin" }
                ]
            }
        )

    创建业务库用户(这里是test),需要在每个结点(每个分片结点,每个路由结点)上都要创建用户
      use test
      db.createUser(
            {
                user  : "test",
                pwd   : "test123456",
                roles :
                [
                    { role : "dbOwner", db : "test" }, 
                    { role : "clusterAdmin", db : "admin" } 
                ]
            }
        )

    3. 开启集群认证
    在每个结点(路由结点,元配置结点,分片结点)的配置文件中加入keyFile的配置项; 
    security:
      keyFile: /var/lib/mongo/auth/keyfile.key

    在每个元配置结点和分片结点(即除了mongos结点)的配置文件中加入authorization配置项
    security:
      authorization: enabled

    关闭集群
    按照路由结点、分片结点、配置结点顺序,依次关闭各结点服务:
    systemctl stop mongod-mongos
    systemctl stop mongod-shard3
    systemctl stop mongod-shard2
    systemctl stop mongod-shard1
    systemctl stop mongod-configsvr

    重新启动集群
    systemctl start mongod-configsvr
    systemctl start mongod-shard1
    systemctl start mongod-shard2
    systemctl start mongod-shard3
    systemctl start mongod-mongos

    4. 验证集群的认证
    mongo 127.0.0.1:20000/admin  
        
    use admin
    db.auth(“admin”, ” admin123456”)

    查看分片状态
    db.printShardingStatus()

    use test
    db.auth(“test”,”test123456”)

    查看该库中的该表的集群状态
    db.users.stats()
    若发现里面最开始的sharded字段是true,则表示添加认证功能后的集群没有出现异常

  • 相关阅读:
    SDUT 1488 数据结构实验:连通分量个数
    SDUT 3364 数据结构实验之图论八:欧拉回路
    SDUT 2413 n a^o7 !
    SDUT 3363 数据结构实验之图论七:驴友计划
    SDUT 3362 数据结构实验之图论六:村村通公路
    SDUT 2139 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
    POJ 3278 Catch That Cow
    SDUT 3361 数据结构实验之图论四:迷宫探索
    SDUT 2107 数据结构实验之图论二:图的深度遍历
    SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
  • 原文地址:https://www.cnblogs.com/liqing1009/p/8612021.html
Copyright © 2011-2022 走看看