• mongoDB的复制集5----复制集安全(认证,用户,权限)



    一、什么是认证
      如何开启认证
        1).auth=true(在配置文件里增加)
        2).keyFile(建议添加到配置文件里)

    #如果设置了auth=true,但第一次没有创建用户就启动实例怎么办
    # 在配置文件里增加如下
    echo "setParameter=enableLocalhostAuthBypass=1" >> /usr/local/mongoDB/conf/28001.conf
    #然后用本地ip连接
    mongo localhost:28001
      auth与keyFile的区别
        auth  单点
        keyFile  集群之间验证
       开户keyFile默认开户auth
    1-1.如何配置keyfile
    keyFile的注意事项:
      1.内容 base64编码集[a-z A-Z +/]
      2.长度 1000bytes
      3.权限至少 chmod 600 keyFile (
    配置:
      1).在配置文件去除auth=true;
      2).增加keyFile=/usr/local/mongoDB/.keyFile,在28001.conf等三个文件都这么配置

    changwen@ubuntu:~$ touch .keyFile
    changwen@ubuntu:~$chmod 600 .keyFile

    changwen@ubuntu:~$ openssl rand -base64 102
    bFWO/1wdII04a6lNCFy9I5mfQ161K9HO/eMLcrQhUVhZrztXBSG2OkJxotXqvAhq
    jEB6JSA/3Hq6m7X7a+K66pSQcCRXVgZ9+exl2piDdgkOFdB9q9PTXK+uCnvFXlfM
    cJL+fA74
    changwen@ubuntu:~$ openssl rand -base64 102 > .keyFile

    # 后面就启动和连接服务器
    二、用户
    2-1.如何创建/删除一个用户
      1).创建语法:createUser(2.6之前为addUser)
      2).db.createUser(
         {user:"<name>",
          pwd:"<cleartext password>",
          roles:[{role:"<role>",db:"<database>"}]})

    # 创建第一个用户一定要有创建其他用户的能力
    db.createUser(
    {user:'adminTest',
    pwd:"'123455',
    roles:[{role:'root',db:'admin'}]})

    # 再次连接时,在哪创建的用户就需要登陆到哪个库的认证
    db.auth('adminTest','12345')

    #然后就可以操作数据库了
    2).如何删除一个用户
      db.dropUser(<user_name>) :删除某个用户,接受字体串参数
      db.dropAllUsers()        :删除当前库的所有用户,使用小心
    3).如何修改用户密码
      需要具备changePassword或changeOwnPassword
      db.changeUserPassword(<user_name>,<new_password>)
      db.updateUser(<user_name>,{update_object})

    三、权限
      角色:对某一资源的权限的‘集合‘
      mongoDB有两种角色,一种是自带的角色(built-in roles),还有一种是自定义角色。

      3).角色类型:内建类型
      读写:read,readWrite,  
      管理员:dbAdmin,dbOwner,userAdmin、clusterAdmin,clusterManager,clusterMonitor,hostManager
      备份: backup、restore
      全局: readAnyDatabas, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase
      超级用户:root

     自定义角色
      db.createRole({
        role:<role_name>,
        privileges:[{resource:{db:<db_name>,collection:<coll_name>},actions:[<action_name>]}],
        roles:[{role:<role_name>,db:<db_name>}]})

    # 将用户的权限都打印出来
    db.runCommand({userInfo:'admin',showPrivileges:1})

    #自定义角色
    db.createRole({
    role:'testRole',
    privileges:[{resource:{db:'changwen',collection:''},
    actions:['find','insert','remove']}],
    roles:[{role:'read',db:'test'}]})
    #创建用户
    db.createUser(
    {user:'roleTest',
    pwd:"'123',
    roles:[{role:'testRole',db:'admin'}]})
    三、权限伸缩
    1).如何增加权限
      db.grantRolesToUser(
        <user_name>,
        [{role:<role_name>,db:<db_name>}])
      注意,本方法接受2个参数,而不是两个对象
        而且如何权限重复不会覆盖,新的会增加

    db.grantRolesToUser('roleTest,[{role:'readWrite',db:'test'}])
    2).如何收缩权限
      db.revokeRolesToUser(
        <user_name>,
        [{role:<role_name>,db:<db_name>}])

    ---------------------

    本文来自 liucw_cn 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ochangwen/article/details/52388911?utm_source=copy

  • 相关阅读:
    任意不规则形状的图片剪裁 .
    C#图片处理示例(裁剪,缩放,清晰度,水印)
    C#对图片文件的压缩、裁剪操作初探
    CSS和SVG中的剪切——clip-path属性和<clipPath>元素
    Java中继承thread类与实现Runnable接口的区别
    Android学习系列(7)--App轮询服务器消息
    Android学习系列(15)--App列表之游标ListView(索引ListView)
    Android学习系列(20)--App数据格式之解析Json
    Android学习系列(22)--App主界面比较
    Android学习系列(23)--App主界面实现
  • 原文地址:https://www.cnblogs.com/ExMan/p/9696235.html
Copyright © 2020-2023  润新知