MongoDB AUTH結果驗證
- 建立超級管理員和普通使用者
#建立超級管理員 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 和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 表明操作正常
[[email protected] 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之後,普通使用者只對所屬的資料庫有操作許可權。