MongoDB AUTH結果驗證及開啓方法

 
 
 
  1. 建立超級管理員(root)和普通用戶(gxpt)

#建立超級管理員(root)
RS1:PRIMARY> use admin
RS1:PRIMARY> db.createUser( 
  { user: "root", 
    pwd: "root", 
    roles: [ { role: "root", db: "admin" } ] 
  } 
); 
 
root用戶所屬admin數據庫
RS1:PRIMARY>  db.auth('root', 'root');
返回1 則執行成功
#建立普通用戶(gxpt)
#切換至gxpt數據庫
RS1:PRIMARY>use gxpt
RS1:PRIMARY>db.createUser( 
  { user: "gxpt", 
    pwd: "gxpt", 
    roles: [ { role: "readWrite", db: "gxpt" } ] 
  } 
); 
gxpt用戶所屬gxpt數據庫
認證用戶(gxpt)
RS1:PRIMARY> db.auth("gxpt","gxpt");
1
1返回1 則執行成功
  1. 服務端確認當前用戶

RS1:PRIMARY> use admin;
 switched to db admin
RS1:PRIMARY> show users;
{
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
RS1:PRIMARY> use gxpt;
switched to db gxpt
RS1:PRIMARY> show users;
{
        "_id" : "gxpt.gxpt",
        "user" : "gxpt",
        "db" : "gxpt",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "gxpt"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
}用戶權限以下  
用戶  
角色                      
身份
root 
root
超級管理員
gxpt
readWrite
普通用戶
 
  1. 未開啓AUTH認證

    1. root用戶登陸

新建數據庫
ok
刪除數據庫
ok
    1. gxpt用戶登陸

新建數據庫
ok
刪除數據庫
ok
結論:未啓用AUTH,普通用戶能夠對任何數據庫作 建立、刪除操做!!!
所以爲了規避不規範操做,必須開始Mongo的AUTH認證
 
  1. 官方文檔對於角色 <root>的描述

可見:角色<root>是涵蓋 readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore, and backup等角色的超級角色
 
  1. 生成祕鑰文件

[root@MongoDB236 ~]# openssl rand -base64 100 > /opt/var/data/mongodb/mongodb.key
[root@MongoDB236 ~]# chmod 600 /opt/var/data/mongodb/mongodb.key
請根據初始化參數文件指定該文件名稱及目錄
遠程拷貝至其餘節點
[root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.237:/opt/var/data/
[root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.238:/opt/var/data/
 
  1. 修改初始化參數文件 xxxx.conf文件

。。。
keyFile=/opt/var/data/mongodb/mongodb.key
auth=true
。。。
請放開以上參數
  1. 分別在三個節點從新啓動MongoDB

[root@MongoDB236 ~]# service mongodb stop
[root@MongoDB236 ~]# service mongodb start
 
  1. 開啓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
MongoDB server version: 4.0.0
> db;db;
admin
> show dbs;show dbs;
admin  0.000GB
gxpt   0.000GB
local  0.000GB
ok
 
 
    1. root用戶登陸

super用戶對gxpt數據庫建立collection
ok
super用戶對gxpt數據庫建立collection
Ok
 
    1. gxpt用戶登陸

gxpt只對gxpt數據庫有讀寫權限,所以能夠正常 建立、刪除collection
對於其餘數據庫沒有讀寫權限!!!所以其餘數據庫不可見
借用客戶端對其餘庫建立collection 報錯:未通過認證
結論:啓用AUTH以後,普通用戶只對所屬的數據庫有操做權限。
相關文章
相關標籤/搜索