1. 创建超级管理员和普通用户

#创建超级管理员 super

db.createUser(

{ user: "super",

pwd: "super",

roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ]

}

);

#创建读写管理员 gxpt

db.createUser(

{ user: "gxpt",

pwd: "gxpt ",

roles: [ { role: "readWriteAnyDatabase", db: "gxpt" } ]

}

);

必须在启用AUTH之前认证用户

> db.auth('super', 'super');

> db.auth('gxpt', 'gxpt');

1.服务端查看当前用户

> show users;

{

"_id" : "admin.readWrite",

"user" : "readWrite",

"db" : "admin",

"roles" : [

{

"role" : "readWrite",

"db" : "gxpt"

}

],

"mechanisms" : [

"SCRAM-SHA-1"

]

}

{

"_id" : "admin.super",

"user" : "super",

"db" : "admin",

"roles" : [

{

"role" : "dbAdminAnyDatabase",

"db" : "admin"

}

],

"mechanisms" : [

"SCRAM-SHA-1"

]

}

}用户权限如下

用户

权限

身份

super

dbAdminAnyDatabase

超级管理员

gxpt

readWrite

普通用户

分别比较super  和gxpt两个用户的操作权限

2.未开启AUTH认证

2.1 super用户登录

新建数据库

ok

删除数据库

ok

2.1 gxpt用户登录

新建数据库

ok

删除数据库

ok

结论:未启用AUTH,普通用户可以对任何数据库做 新增、删除操作!!!

3. 开启AUTH认证

需要在未启用AUTH的情况下对 admin 和 gxpt启用认证。

> db.auth("admin","admin");

1

> db.auth("gxpt","gxpt");

1

返回1 表明操作正常

[root@Mongodb237 mongodb]# mongo -usuper -psuper 127.0.0.1/admin

MongoDB shell version v4.0.0

connecting to: mongodb://127.0.0.1:27017/admin

MongoDB server version: 4.0.0

> db;db;

admin

> show dbs;show dbs;

admin  0.000GB

gxpt   0.000GB

local  0.000GB

ok

3.1           super用户登录

super用户对gxpt数据库创建collection

ok

super用户对gxpt数据库创建collection

Ok

3.2           readwrite用户登录

readwrite 只对gxpt数据库有读写权限,因此可以正常 创建、删除collection

对于其他数据库没有读写权限!!!因此其他数据库不可见

借用客户端对其他库创建collection 报错:未经过认证

结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。

04-14 18:57