MongoDB开启访问权限控制

概述

       在MongoDB实例上开启访问权限控制,意味着强制要求用户输入账号密码进行授权认证。在开启了访问权限控制的MongoDB实例上,用户能进行的操作取决于登陆账号的角色(roles)。

       MongoDB支持多种授权认证机制。下面将介绍如何使用MongoDB默认的机制开启访问权限控制。

用户管理员

       在开启访问权限控制时,需要确保admin库中有一个被分配了userAdmin或者userAdminAnyDatabase角色的用户账号。这个账号可以管理用户和角色,比如:创建用户,获取角色权限,创建或修改自定义角色等。

       在访问权限控制开启之前或之后,都可以执行创建用户的操作。如果你在开启访问权限控制之前没有创建任何用户,MongoDB提供一个特有机制,让你能够在admin库中创建管理员账号。一旦管理员账号创建完毕,其他账号则必须使用该管理员账号进行创建。

步骤

       在下面的流程中,首先在尚未开启访问权限控制的MongoDB实例中添加一个用户管理员账号,然后再开启访问权限控制。

1.启动MongoDB服务(禁用访问权限控制)

mongod --port 27017--dbpath /data/db1

2.连接至MongoDB实例

mongo --port 27017

3.添加管理员账号

use admin

db.createUser({user: "myUserAdmin", pwd: "abc123", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})

4.重启MongoDB实例,并启用访问权限控制

mongod --auth --port 27017--dbpath /data/db1

5.连接至MongoDB实例

mongo --port 27017

切换至admin库,并登陆

use admin

db.auth("myUserAdmin","abc123")

6.添加普通用户账号

use test

db.createUser({user: "myTester", pwd: "xyz123", roles: [{role: "readWrite", db: "test"}, {role: "read", db: "reporting"}]})

7.使用普通用户账号登陆

mongo --port 27017

use test

db.auth("myTester","xyz123")

向数据集中添加纪录

db.foo.insert({x:1, y:1})

推荐阅读更多精彩内容