Mongodb增加权限控制

安装好 Mongodb 后,启动Mongo服务,在启动前的配置里面暂时先不要加个–auth参数。

其中的–auth这个参数就是用来增加权限访问的东西,所以在未添加访问用户前,先不添加此参数。

在与Mongo服务连接成功后,使用show dbs可以查看当前的数据库列表。

1
2
3
show dbs
admin    0.078GB
local    0.078GB

如果是一个全新的Mongo服务,一般有以上两个基本库在里面。其中的admin库就是用来做权限管理的。

然后我们切换到admin库,在库中加入全局管理用户(拥有管理库权限的用户)。

1
use admin    #切换到admin库

切入admin库后,查看库中的集合。

1
2
3
4
show collcetions    #查看库中的集合表
system.indexes
system.users
system.version

可以看到,其中有一个集合就是system.users,这个集合就是用来存储管理员信息的。

下面我们来添加一个admin的管理用户。

1
2
3
4
5
6
7
8
9
10
11
#2.x版本的Mongodb添加用户,密码采用MONGODB-CR加密
db.addUser("admin","admin")

#3.x版本的Mongodb添加用户,密码采用SCRAM-SHA-1加密
db.createUser(
 {
   user: "admin",
   pwd"admin",
   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 }
)

上面添加用户时,3.x版本的Mongodb同样也可能使用MONGODB-CR的加密方式,详情查看3.x版本的MONGODB-CR加密方式

在成功添加完用户后,我们重启服务,在配置里面加上–auth参数,使用服务开启权限认证。

这样在我们连接Mongodb的时候需要进行权限认证。

1
db.auth("admin","admin")

需要注间的是,在需要权限认证的库上面添加用户前,需要先切换到当前库,然后再为库添加用户。

例如我要给demo库添加一个demo的用户,则先要use demo到此库,然后为库新增权限管理用户。