#建立超級管理員 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以後,普通用戶只對所屬的數據庫有操做權限。