一、什么是认证
  如何开启认证
    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

mongoDB的复制集5----复制集安全(认证,用户,权限)的更多相关文章

  1. MongoDB复制集安全认证

    之前我有一篇博客写的是“node.js通过权限验证连接MongoDB”,这篇博客上提到如何在启动文件中通过配置auth参数来开启权限认证,但这种认证方式只适合单机节点,当我们使用复制集时应该怎么开启权 ...

  2. MongoDB实战指南(七):MongoDB复制集之复制集工作机制

    http://www.cnblogs.com/longshiyVip/p/5097336.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之——自动故障转移是怎么实现的呢?数据 ...

  3. MongoDB实战指南(六):MongoDB复制集之复制集概述

    1. 复制集概述 数据库总是会遇到各种失败的场景,如网络连接断开.断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一 ...

  4. mongodb复制集开启安全认证

    之前我有一篇博客写的是“node.js通过权限验证连接MongoDB”,这篇博客上提到如何在启动文件中通过配置auth参数来开启权限认证,但这种认证方式只适合单机节点,当我们使用复制集时应该怎么开启权 ...

  5. MongoDB之分片集群与复制集

    分片集群 1.1.概念 分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...

  6. Mongodb Manual阅读笔记:CH8 复制集

    8 复制 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...

  7. MongoDB复制集之将现有的单节点服务器转换为复制集

    服务器情况:   现有的单节点 Primary     192.168.126.9:27017   新增的节点    Secondry  192.168.126.8:27017    仲裁节点     ...

  8. mongodb复制集Replica Set使用简介

    MongoDB高可用 对于MongoDB,可以支持使用单机模式提供服务,但是在实际的生产环境中,单机模式将面临很大的风险,一旦这个数据库服务出现问题,就会导致线上的服务出现错误甚至崩溃.因此,在实际生 ...

  9. MongoDB复制集成员及状态转换

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 复制集(Replica Set)是MongoDB核心组件,相比早期版本采用的主从(Master-Slave) ...

随机推荐

  1. iOS数据持久化存储

    本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...

  2. 【hibernate】报错:org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement

    报错如下: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a ...

  3. Windows下Python安装pyecharts

    都说pyechart用来可视化好,可是安装的时候各种坑 正常情况是 pip install pyecharts 然后各种报错,找到一种可行的方式 在https://pypi.org/project/p ...

  4. SAE云平台的使用

    参考文章:http://www.cnblogs.com/luyangsblog/p/3956135.html                 Web开发从零单排之一:在新浪云平台SAE上开发一个htm ...

  5. 走入asp.net mvc不归路:[3]创建控制器

    实际上,控制器就是一个类,一个继承自Controller的类.正常创建一个Controller即可,而问题在于asp.net mvc提供了一套便捷的方法,在创建一个Controller时,可以自动创建 ...

  6. 在OpenStack中绕过或停用security group (iptables)

    眼下.OpenStack中默认採用了security group的方式.用系统的iptables来过滤进入vm的流量.这个本意是为了安全,可是往往给调试和开发带来一些困扰. 因此,暂时性的禁用它能够排 ...

  7. numpy - 数组索引

    numpy 数组索引 一.单个元素索引 一维数组索引 >>> x = np.arange(10) >>> x[2] 2 >>> x[-2] 8 二 ...

  8. centos 安装php7 memcached扩展

    在使用下面这种方式安装php7 memcached扩展时,先要安装好memcached服务器yum -y install php70w-pecl-memcached

  9. 嵌入式开发之davinci--- 8168 question about capture PAL on 8168

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/340483.aspx?pi199607=2

  10. ObjectARX学习笔记(三十二)----怎样设置AcDbMText对齐方式

    //_T("\\pxql;") 居左 //_T("\\pxqr;") 居右 //_T("\\pxqc;") 居中 //_T("\\ ...