#建立超级管理员 supermongodb db.createUser( shell { user: "super", 数据库 pwd: "super", spa roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ] server } ci ); it
#建立读写管理员 gxptio db.createUser( table { user: "gxpt", 登录 pwd: "gxpt ", roles: [ { role: "readWriteAnyDatabase", db: "gxpt" } ] } );
必须在启用AUTH以前认证用户 > db.auth('super', 'super'); > db.auth('gxpt', 'gxpt'); |
> 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 和gxpt两个用户的操做权限 |
新建数据库
ok
删除数据库
ok
新建数据库
ok
删除数据库
ok
结论:未启用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
|
super用户对gxpt数据库建立collection
ok
super用户对gxpt数据库建立collection
Ok
readwrite 只对gxpt数据库有读写权限,所以能够正常 建立、删除collection
对于其余数据库没有读写权限!!!所以其余数据库不可见
借用客户端对其余库建立collection 报错:未通过认证
结论:启用AUTH以后,普通用户只对所属的数据库有操做权限。