• 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,则表示添加认证功能后的集群没有出现异常

  • 相关阅读:
    【wikioi】1014 装箱问题
    石子合并
    我的Linux对拍脚本
    【搬运工】NOIP吧置顶贴
    [LeetCode] 237. Delete Node in a Linked List 删除链表的节点
    [LeetCode] 316. Remove Duplicate Letters 移除重复字母
    [LeetCode] 82. Remove Duplicates from Sorted List II 移除有序链表中的重复项 II
    [LeetCode] 83. Remove Duplicates from Sorted List 移除有序链表中的重复项
    [LeetCode] 80. Remove Duplicates from Sorted Array II 有序数组中去除重复项 II
    [LeetCode] 26. Remove Duplicates from Sorted Array 有序数组中去除重复项
  • 原文地址:https://www.cnblogs.com/liqing1009/p/8612021.html
Copyright © 2020-2023  润新知