MongoDB 3.0安全权限访问控制

8 篇文章 0 订阅
5 篇文章 0 订阅
MongoDB的安全权限访问控制,国内出版的书籍,网上找到博文全是使用db.addUser(username,password)来增加用户。在MongoDB 3.0中执行次方法会报错。

这里写图片描述

提升信息可以看出系统找不到该方法。原因是这个方法在3.0中已经被废弃了。
在使用MogoDB时,此时你 show dbs 会看到只有一个local数据库,那个所谓的超级管理员admin是不存在的而存在一个超级管理员用户userAdminAnyDatabase。
现在我们先给我们的MogoDB添加一个超级管理员:

查看MongoDB官方文档: 添加用户使用的是db.createUser()
官方文档的原文如下:

db.createUser(user, writeConcern)

  Creates a new user for the database where the method runs. db.createUser() returns a duplicate user error if the user already exists on the database.

这里写图片描述

如上看出createUser需要两个参数: user 与 writeConcern。

user的示例:

 { user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ]
}

user只需要四个字段:用户名,密码,用户说明,角色等等。其中customData是可选的。而至于roles可以写一个空是数组。

例如:

db.createUser(
{  user:"root",
   pwd:"toor",
   roles:[ ]}
)

我们添加的是一个超级管理员:

use admin
db.createUser(
  {
    user: "root",
    pwd: "toor",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
与之前的版本一样,用户依然保持在system.users集合下。

查看用户:
show users

db.system.users.find()

使用–auth启动MongoDB安全验证,然后我们在shell客户端中通过db.auth(“root”,”toor”)
此时执行一个查询操作会报错
Error: error: { "$err" : "not authorized for query on helloworld.persons", "code" : 13 }
这个因为我们给root用户赋予的是userAdminAnyDatabase角色。该角色没有读写权限,只有用户管理的权限。
创建可以读写数据库的角色:
use helloworld
db.createUser(
 {
   user: "wang",
   pwd: "123456",
   roles: [
      { role: "readWrite", db: "helloworld" },
      { role: "read", db: "test" }
   ]
 }
)

这样创建的用户在helloworld中是可读写的角色,在test中是只读角色。

现在我们来看MongoDB 3.0中都有什么roles:

可以参考这篇MongoDB官方文档的翻译版本:
http://www.cnblogs.com/SamOk/p/5162767.html

参考:

https://docs.mongodb.org

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值