• mongodb分片集群开启认证功能


    mongodb分片集群开启认证功能

    前言

    MongoDB 在开启了访问控制后,只有一次添加用户的机会,此后的操作都需要先认证通过。为了方便,我们先添加用户, 然后再开启访
    问控制。
    

    环境说明

    服务      端口      版本  
    docker              1.13.1
    mongos    27017     4.2.8
    config    27000     4.2.8
    shard01   27001     4.2.8
    shard02   27002     4.2.8
    。。。
    

    1、添加用户

    连接上 mongos 添加的用户会保存在 config 副本集中,但是不会保存到 shard 副本集,因此添加用户的操作需要分别在 config、 shard01、shard02、 shard03 上执行。 mongos 没有数据不需要集群启动后任意连接 config 3 台中的一台

    1)给config创建用户(主节点操作)
    mongo --port 27000
    >use admin
    >db.createUser({user: "root", pwd:"ptmind890iop",roles:["clusterAdmin","userAdminAnyDatabase","dbAdminAnyDatabase","readWriteAnyDatabase" ]})
    >db.auth("root","ptmind890iop")
    1      <<====返回1 说明认证成功
    
    2)依次连接所有 shard 的主节点 创建用户
    mongo --port 27001
    >use admin
    >db.createUser({user: "root",pwd:"ptmind890iop",roles:["clusterAdmin","userAdminAnyDatabase","dbAdminAnyDatabase","readWriteAnyDatabase" ]})
    >db.auth("root","ptmind890iop")
    1      <<====返回1 说明认证成功
    
    
    MongoDB 数据库默认角色
    数据库用户角色:read、readWrite
    数据库管理角色:dbAdmin、dbOwner、userAdmin
    集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
    备份恢复角色:backup、restore
    所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
    dbAdminAnyDatabase
    超级用户角色:root
    

    角色介绍链接:https://docs.mongodb.com/manual/reference/built-in-roles/

    2、启动访问控制

    启用访问控制之后,外部访问 MongoDB 服务需要进行身份验证,而 mongos 访问 config 和 shard 服务则是通过配置的秘钥文件

    1)创建秘钥文件
    >openssl rand -base64 753 >> /data/mongodb/keyFile.key
    >chmod 0600 /data/mongodb/keyFile.key
    >chown mongod:mongod /data/mongodb/keyFile.key
    

    将密钥文件复制到所有节点上。

    2)添加keyfile配置

    mongos 与config 指定keyfile文件的位置 --keyFile 然后依次升级重启

    注:此操作最好在集群创建之初操作,升级mongo服务是因为认证开启的差异性,会倒是整个集群获取不到状态,无法对外提供服务

    config 
    /usr/bin/mongod --keyFile /data/db/keyfile.txt --configsvr --replSet myset --bind_ip_all --dbpath /data/db --port 27000 --logpath /var/log/mongo/config.log --maxConns 8000 --wiredTigerCacheSizeGB 4
    
    
    shard01
    /usr/bin/mongod --keyFile /data/db/keyfile.txt --shardsvr --replSet shard1 --port 27001 --bind_ip_all --dbpath /data/db --logpath /var/log/shard1.log --oplogSize 8000 --maxConns 5000 --profile 2 --slowms 200 --journalCommitInterval 500 --wiredTigerCacheSizeGB 8
    
    
    shard02
    /usr/bin/mongod --keyFile /data/db/keyfile.txt --shardsvr --replSet shard2 --port 27002 --bind_ip_all --dbpath /data/db --logpath /var/log/shard2.log --oplogSize 8000 --maxConns 5000 --profile 2 --slowms 200 --journalCommitInterval 500 --wiredTigerCacheSizeGB 8
    
    mongos
    mongos --configdb myset/172.20.100.101:27000,172.20.100.103:27000,172.20.100.104:27000,172.20.100.132:27000  --keyFile /data/db/keyfile.txt --logpath /var/log/mongo/mongos.log --logappend --port 27017 --bind_ip_all --maxConns 10000
    
    3)查看状态
    mongo --port 27017
    >show dbs            <===因为没有认证,所以查看库,返回空
    > use admin
    switched to db admin
    >db.auth("root","ptmind890iop")   
    1                    <===认证成功,返回值 1,相反失败则返回0
    >show dbs            
    admin                           0.000GB
    config                          0.018GB
    ptx_13b93484                    0.001GB
    ptx_17c0213x                    0.001GB
    ptx_1dxaxd9r                    0.001GB
    ptx_1fd21rt7                    0.001GB
    ptx_21f0e7b5                    0.007GB
    ptx_21nhxrgw                    0.001GB
    ...   ##返回所有库,认证配置成功
    

    参考链接:
    https://docs.mongodb.com/v4.2/tutorial/deploy-sharded-cluster-with-keyfile-access-control/

  • 相关阅读:
    C# 定时任务
    Web电子签集成开发笔记
    海康威视二次开发笔记
    SQL Server 2008R2创建自动备份计划
    图片上传及显示(包含多文件)
    程序员的孤独
    Iframe用法
    Bootstrap模态框(MVC)
    工作时发现的问题【组织管理】【客户对接】【项目流程】
    为啥有人觉得你写程序写得好,有人觉得你不称职
  • 原文地址:https://www.cnblogs.com/dzc-/p/13898351.html
Copyright © 2020-2023  润新知