• mongodb 分片集群认证


    增加认证

    • 副本间认证
    • 外部使用认证

    如果是开启状态,先关闭路由,再关闭配置服务,最后关闭分片数据复本集中的每个mongod,从次节点开始。直到副本集的所 有成员都离线,包括任何仲裁者。主节点必须是最后一个成员关闭以避免潜在的回滚.最好通过 db.shutdownServer() 关闭数据库,防止后续启动时报错

    //shutdown must run from localhost when running db without auth
    //客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
    mongo --port 27017
    //#切换到admin库
    use admin
    //关闭服务
    db.shutdownServer() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    副本间认证

    (在开启认证前,需要先创建超管用户)

    use admin
    db.createUser({user:"myroot",pwd:"123456",roles:["root"]})
    
    • 1
    • 2

    副本集和共享集群的各个节点成员之间使用内部身份验证,可以使用密钥文件或x.509证书

    1.证书产生

    openssl rand -base64 150 > ./mongo.keyfile
    
    # 赋予证书读权限
    chmod 400 mongo.keyfile
    
    • 1
    • 2
    • 3
    • 4

    2.将证书复制到所有的节点上,包括配置服务和路由

    复制完成后,记得修改文件权限

    # 赋予证书读权限
    chmod 400 mongo.keyfile
    
    • 1
    • 2

    3.修改配置文件

    分片数据副本集和配置服务副本集上增加的配置
    vim /use/local/mongodb/configs/mongodb.conf

    security:
        #KeyFile鉴权文件
        keyFile: /use/local/mongodb/configs/mongo.keyfile
        #开启认证方式运行
        authorization: enabled
    
    • 1
    • 2
    • 3
    • 4
    • 5

    路由服务上增加的配置,路由服务不需要配置security.authorization

    security:
        #KeyFile鉴权文件
        keyFile: /use/local/mongodb/configs/mongo.keyfile
    
    • 1
    • 2
    • 3

    4.重启集群

    cd /use/local/mongodb
    # 分片数据副本集和配置服务副本集
    bin/mongod -f configs/mongodb.conf
    
    # 路由服务
    bin/mongos -f configs/mongodb.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    tip:

    • 重启时可能会遇到重启失败的情况,可能是应该异常关闭分片集群导致的,可以尝试删除data/db/mongod.lock文件
    • 重启分片数据存储副本集时可能会遇到启动后一直卡着,没有返回success情况,此时通过看日志如果看到其中包含有**RSM monitoring host in expedited mode until we detect a primary",“attr”:{“host”:“#{ip:端口}”,“replicaSet”:“#{集群配置-replication.replSetName}”}}**错误,是因为集群没有完整的启动,接着启动集群的其他功能即可解决

    登录认证

    通过完善副本间认证后,启动服务,即可通过密码进行登录了

    未使用密码登录会报错

    mongodb://路由1:端口,路由2:端口
    
    • 1

    MongoServerError: Command hostInfo requires authentication
    在这里插入图片描述

    使用密码登录即可正确登录

    mongodb://myroot:123456@路由1:端口,路由2:端口
    
    • 1

    在这里插入图片描述

    spring认证

    spring:
      data:
        mongodb:
          # uri: ${MONGODB_URI:mongodb://${账号}:${密码}@路由1:端口,路由2:端口/${连接的库}?authSource=${校验认证信息的库}}
          uri: ${MONGODB_URI:mongodb://root:123456@192.168.2.18:27017,192.168.2.19:27017/db_test?authSource=admin}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看分片信息

    查看对应collection存储信息

    通过直接连接mongos

    #   use ${目标db}
    use test
    db.stats()
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    count数可能不一致
    在这里插入图片描述
    详细字段请参看官网dbstat
    在这里插入图片描述

    mongodb角色

    角色权限
    read查询本库的权限
    readWrite增删改查本库的权限
    dbAdmin数据库对象的管理操作,但没有数据库的读写权限
    userAdmin在本库下创建用户的权限
    dbOwner本库所有操作的权限
    readAnyDatabase查询本实例所有库的权限
    readWriteAnyDatabase增删改查本实例所有库的权限
    userAdminAnyDatabase在本实例所有库下创建用户的权限
    dbAdminAnyDatabase本实例所有库的dbAdmin权限
    hostManager数据库对象的管理操作,但没有数据库的读写权限
    clusterMonitor查询集群和复制集的权限
    clusterManager管理和监控集群和复制集的权限
    clusterAdmin集群所有操作的权限
    backup查询本实例所有库的权限
    restore增删改查本实例所有库的权限
    root超级用户权限

    更多角色信息

  • 相关阅读:
    OC-KVO和KVC
    Lock作用及其使用
    【Vue3.0移动端项目--旅游网】-- 房东评价、热门评论、预定须知模块
    Java注释规范简介说明
    WebMvcConfigurer配置详解
    LRU自定义最近最少使用-java实现
    CloudService计算类技术和网络类技术以及存储类技术的基础学习
    Linux 驱动开发 五十六:Buildroot 笔记
    【Linux私房菜】第七期——尾声
    【从零开始学习 SystemVerilog】11.2、SystemVerilog 断言—— Immediate Assertions(立即断言)
  • 原文地址:https://blog.csdn.net/weixin_44728369/article/details/138162436