欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

[教程]MongoDB 从入门到进阶 (User系统)

程序员文章站 2022-06-11 16:54:58
...

自从MongoDB升级到2.4之后,User系统,或者说是权限系统有了翻天覆地的变化。 在MongoDB2.4之前的User系统,除了用户名和密码之外,只有一个ReadOnly属性。 如果一个用户在admin数据库里面进行了登陆,则admin数据库里面的Readonly属性将被沿用到其他所有的

自从MongoDB升级到2.4之后,User系统,或者说是权限系统有了翻天覆地的变化。

在MongoDB2.4之前的User系统,除了用户名和密码之外,只有一个ReadOnly属性。

如果一个用户在admin数据库里面进行了登陆,则admin数据库里面的Readonly属性将被沿用到其他所有的数据库。

这样的权限管理当然是最最容易管理的,任何能够登入到MongoDB的用户,如果在Admin的数据库的用户表里面存在记录,则对于整个服务器上的所有数据库的访问权限也就固定下来了。

当然,用户可以了在个别的数据库的用户表中定义自己的权限。所谓的权限也就是只读或者非只读。

到了2.4之后,MongoDB的用户模型发生了很大的变化

MongoUser(2.4之前)

用户名

密码

是否只读

MongoUser(2.4之后)

用户名

密码

角色

其他数据库角色(如果该用户在Admin数据库的User表里面登陆的话,可以个别指定对于具体数据库访问的权限)

外部验证

“角色”这个概念,也“是否只读”比起来,内容丰富多了,不同的角色可以进行的操作是不同的,有的可以管理用户,看得到用户表,有的只能看到普通的数据表。

最近一直在对用户和权限进行研究,总结了一下心得:

1.由于要顾及以前的版本,ReadOnly属性还是可以使用的,不过,ReadOnly和Role是不能共存的

2.密码和外部验证,也是不能共存的,要么用密码验证身份,要么用外部验证数据库来验证身份

3.其他数据库角色只能在Admin里面进行登录。

接下来说说坑爹的C#的驱动程序:C#的驱动程序,对于MongoUser的巨大变化,还没有开始进行对应。自己动手丰衣足食,我现在的开发都是使用自己改写的MongoUser类。

我不是很明白,为什么C#驱动不对应MongoUser的变化,我也不清楚其他语言的驱动程序是否也没有对应。。。。

这里是新的添加用户的GUI

[教程]MongoDB 从入门到进阶 (User系统)

添加了用户后,请不要忘记在启动MongoDB的时候加上 --auth的参数,不然的话,默认是不会启动认证的,不管是谁,都是完全的Admin的权限。

如果对于我的GUI工具感兴趣,Github上面有所有的代码

https://github.com/magicdict/MagicMongoDBTool

这次工具开始尝试提供性能监视工具,当然,只是一个小的尝试罢了。

[教程]MongoDB 从入门到进阶 (User系统)

再说几句题外话,最近IBM宣布和10gen(MongoDB的开发公司)进行合作。我不知道IBM准备多大限度的支持MongoDB。但是不管怎么说,,对于MongoDB的爱好者来说,是一个不错的消息。

MongoDB现在还是冷门的数据库。园子里面也少有介绍MongoDB的文章,或者即使介绍,也是入门级别的。

技术就像赌博一样,谁知道明年的这个时候,Mongo是不是会大红大紫,成为另一个Oracle。不管怎么样,先投资一下吧。。。。。

想要直接体验工具的: Net3.5是必须的。。。。