婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 分布式文檔存儲數據庫之MongoDB訪問控制的操作方法

分布式文檔存儲數據庫之MongoDB訪問控制的操作方法

熱門標簽:小裙科技電銷機器人怎樣 呼和浩特外呼系統原理是什么 河南電話外呼系統招商 長沙電銷外呼防封卡是什么 智能外呼系統官網 青白江400企業電話申請 外呼線路資源屬于電信業務嗎 內蒙古營銷智能外呼系統哪個好 crm外呼系統聯系方式

  上一篇博客主要聊了下分布式文檔存儲數據庫之MongoDB備份與恢復,回顧請參考https://www.jb51.net/article/199845.htm;今天我們來了解下mongodb的訪問控制;

  什么是訪問控制?

  簡單講訪問控制就是指,哪些用戶可以訪問哪些資源,對資源有哪些操作(權限);在mongodb中我們把數據庫、或者集合叫做資源;也就說訪問控制是用來限制某些用戶對數據庫或集合的操作;我們在mysql數據庫中,我們通過給賬號授權的方式達到控制哪些用戶可以從哪些主機訪問數據庫,對數據庫有哪些操作;其中賬號由用戶名稱和主機地址構成;在mongodb中采用的不是用戶+主機地址的方式,而是通過給用戶賦予一個或多個角色,這個角色或多個角色的所有權限就是這個用戶擁有的權限;默認情況mongodb是沒有啟用訪問控制的,所以只要能夠連接上mongodb實例,我們就可以在其上做任何操作,在某種程度上,這是一種極為不安全的方式,為了杜絕這種不安全的訪問方式,我們需要對mongodb進行訪問控制;

  mongodb中的角色權限說明

  mongodb默認內置了一些角色,不同的角色擁有不同的權限,如下圖

  查看mongodb中某個數據庫所有內置角色

> db.runCommand({rolesInfo:1,showBuiltinRoles:true})
{
  "roles" : [
    {
      "role" : "dbAdmin",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    },
    {
      "role" : "dbOwner",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    },
    {
      "role" : "enableSharding",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    },
    {
      "role" : "read",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    },
    {
      "role" : "readWrite",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    },
    {
      "role" : "userAdmin",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    }
  ],
  "ok" : 1
}
>

  提示:以上是mongodb中test庫的默認角色;如果要查看其它庫,我們需要切換到其他庫,然后運行上述命令查看即可;

  查詢當前數據中的某個角色

> db
test
> db.runCommand({rolesInfo:"userAdmin"})
{
  "roles" : [
    {
      "role" : "userAdmin",
      "db" : "test",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    }
  ],
  "ok" : 1
}
>

  查詢其他數據庫中指定的角色權限

> db.runCommand({rolesInfo:{role:"userAdmin",db:"config"}})
{
  "roles" : [
    {
      "role" : "userAdmin",
      "db" : "config",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    }
  ],
  "ok" : 1
}
> db.runCommand({rolesInfo:{role:"root",db:"config"}})
{ "roles" : [ ], "ok" : 1 }
> db.runCommand({rolesInfo:{role:"root",db:"admin"}})
{
  "roles" : [
    {
      "role" : "root",
      "db" : "admin",
      "isBuiltin" : true,
      "roles" : [ ],
      "inheritedRoles" : [ ]
    }
  ],
  "ok" : 1
}
>

  創建一個用戶名為tom,其角色為超級管理員角色root

> use admin
switched to db admin
> db.createUser({user:"tom",pwd:"admin123.com",roles:[{"role":"root","db":"admin"}]})
Successfully added user: {
  "user" : "tom",
  "roles" : [
    {
      "role" : "root",
      "db" : "admin"
    }
  ]
}
>

  查看當前庫用戶列表

> db
admin
> db.getUsers()
[
  {
    "_id" : "admin.tom",
    "userId" : UUID("67bf434a-49fc-4ed5-9e9b-23c443a2fc93"),
    "user" : "tom",
    "db" : "admin",
    "roles" : [
      {
        "role" : "root",
        "db" : "admin"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  }
]
>

  創建數據庫管理員用戶

> db.createUser({user:"jerry",pwd:"admin123.com",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "jerry", "roles" : [ "userAdminAnyDatabase" ] }
> db.getUsers()
[
  {
    "_id" : "admin.jerry",
    "userId" : UUID("5d0b77f2-b7f1-40cd-8149-f08b2e1e6a80"),
    "user" : "jerry",
    "db" : "admin",
    "roles" : [
      {
        "role" : "userAdminAnyDatabase",
        "db" : "admin"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  },
  {
    "_id" : "admin.tom",
    "userId" : UUID("67bf434a-49fc-4ed5-9e9b-23c443a2fc93"),
    "user" : "tom",
    "db" : "admin",
    "roles" : [
      {
        "role" : "root",
        "db" : "admin"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  }
]
>

  提示:如果創建用戶時,未指定db,則表示當前該用戶對當前所在db生效;

  刪除用戶

> db.dropUser("jerry")
true
> db.getUsers()
[
  {
    "_id" : "admin.tom",
    "userId" : UUID("67bf434a-49fc-4ed5-9e9b-23c443a2fc93"),
    "user" : "tom",
    "db" : "admin",
    "roles" : [
      {
        "role" : "root",
        "db" : "admin"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  }
]
>

  提示:刪除用戶,需切換到對應數據下,指定對應用戶名稱即可;在mongodb中用戶是對應數據庫的,一個用戶可以對應一個或多個數據庫,在指定數據庫刪除用戶,就表示刪除指定用戶對指定數據庫的訪問權限;

  修改指定用戶的密碼

> db
admin
> db.changeUserPassword("tom","123456")
>

  提示:修改用戶密碼,第一個是指定用戶的名稱,第二個是指定新密碼;

  驗證用戶名和密碼

  給錯誤的密碼

> db
admin
> db.auth("tom","admin")
Error: Authentication failed.
0
>

 給正確的密碼

> db
admin
> db.auth("tom","123456")
1
>

  創建一個普通用戶

> use testdb
switched to db testdb
> db.createUser({user:"test",pwd:"admin",roles:[{role:"readWrite",db:"testdb"}]})
Successfully added user: {
  "user" : "test",
  "roles" : [
    {
      "role" : "readWrite",
      "db" : "testdb"
    }
  ]
}
> db.getUsers()
[
  {
    "_id" : "testdb.test",
    "userId" : UUID("95ecb34c-46f4-44fa-8948-4f0875499d8e"),
    "user" : "test",
    "db" : "testdb",
    "roles" : [
      {
        "role" : "readWrite",
        "db" : "testdb"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  }
]
>

 提示:以上就創建了一個名為test的用戶,它可對testdb這個庫下的所有collection做讀寫操作;

  創建一個多角色的用戶

> db
testdb
> db.createUser(
... {
... user:"jerry1",
... pwd:"admin123.com",
... roles:[
... {role:"clusterAdmin",db:"admin"},
... {role:"readWrite",db:"testdb"},
... {role:"read",db:"testdb1"}
... ]
... })
Successfully added user: {
  "user" : "jerry1",
  "roles" : [
    {
      "role" : "clusterAdmin",
      "db" : "admin"
    },
    {
      "role" : "readWrite",
      "db" : "testdb"
    },
    {
      "role" : "read",
      "db" : "testdb1"
    }
  ]
}
> db.getUsers()
[
  {
    "_id" : "testdb.jerry1",
    "userId" : UUID("43d66bf8-1e3a-4c14-ad73-5961b5a7660f"),
    "user" : "jerry1",
    "db" : "testdb",
    "roles" : [
      {
        "role" : "clusterAdmin",
        "db" : "admin"
      },
      {
        "role" : "readWrite",
        "db" : "testdb"
      },
      {
        "role" : "read",
        "db" : "testdb1"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  },
  {
    "_id" : "testdb.test",
    "userId" : UUID("95ecb34c-46f4-44fa-8948-4f0875499d8e"),
    "user" : "test",
    "db" : "testdb",
    "roles" : [
      {
        "role" : "readWrite",
        "db" : "testdb"
      }
    ],
    "mechanisms" : [
      "SCRAM-SHA-1",
      "SCRAM-SHA-256"
    ]
  }
]
>

  提示:在mongodb中一個用戶可以授權擁有多個角色權限;

  開啟mongodb服務端訪問控制配置

  重啟服務

[root@node12 ~]# systemctl restart mongod.service
[root@node12 ~]# ss -tnl
State  Recv-Q Send-Q   Local Address:Port      Peer Address:Port    
LISTEN  0  128      *:22          *:*     
LISTEN  0  100    127.0.0.1:25          *:*     
LISTEN  0  128      *:27017         *:*     
LISTEN  0  128      :::22         :::*     
LISTEN  0  100      ::1:25         :::*     
[root@node12 ~]#

  測試:現在連接mongodb,看看會發生什么?

[root@node12 ~]# mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabledgssapiServiceName=mongodb
Implicit session: session { "id" : UUID("68fa2f83-64a4-42c2-8d64-9ee73a77e883") }
MongoDB server version: 4.4.1
> show dbs
> db
test
> show tables
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
>

  提示:現在我們直接連接mongodb是可以正常連接,但是我們沒法查看數據列表以及collections了;這個時候我們就需要進行用戶認證了;

  認證用戶

> db
test
> db.auth("test","admin")
Error: Authentication failed.
0
> use testdb
switched to db testdb
> db.auth("test","admin")
1
> show dbs
> show collections
>

  提示:認證用戶必須切換到對應的數據庫下做認證;我這里test用戶只能對testdb庫下的所有collection進行讀寫,所以認證以后,我們在使用 show dbs命令就看不到系統admin和config庫了;除了上述連接數據庫以后使用db.auth()做用戶認證,我們也可直接在連接數據庫時指定用戶名和密碼,如下

[root@node12 ~]# mongo -utest -padmin testdb
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/testdb?compressors=disabledgssapiServiceName=mongodb
Implicit session: session { "id" : UUID("60c43e94-04c6-46f4-be07-07ca8fa06b2f") }
MongoDB server version: 4.4.1
> show dbs
> exit
bye
[root@node12 ~]# mongo -utest -padmin 192.168.0.52:27017/testdb
MongoDB shell version v4.4.1
connecting to: mongodb://192.168.0.52:27017/testdb?compressors=disabledgssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a30dbd64-7b59-4a8e-b95d-02ff30e256f3") }
MongoDB server version: 4.4.1
> show dbs
> show tables
>

  以上就是在mongodb中開啟訪問控制,創建用戶,授權的操作;我們只需要在配置文件中指定開啟認證功能,然后使用具有創建用戶權限的用戶登錄數據庫創建用戶授權即可;

到此這篇關于分布式文檔存儲數據庫之MongoDB訪問控制的操作方法的文章就介紹到這了,更多相關MongoDB訪問控制內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 分布式文檔存儲數據庫之MongoDB備份與恢復的實踐詳解
  • 分布式文檔存儲數據庫之MongoDB分片集群的問題
  • SpringDataMongoDB多文檔事務的實現
  • mongodb如何對文檔內數組進行過濾的方法步驟
  • MongoDB中文檔的更新操作示例詳解
  • MongoDB數據庫文檔操作方法(必看篇)
  • mongodb 數據類型(null/字符串/數字/日期/內嵌文檔/數組等)
  • PHP庫 查詢Mongodb中的文檔ID的方法
  • MongoDB如何更新多級文檔的數據

標簽:楚雄 菏澤 池州 白山 呼倫貝爾 安順 舟山 黃石

巨人網絡通訊聲明:本文標題《分布式文檔存儲數據庫之MongoDB訪問控制的操作方法》,本文關鍵詞  分布式,文檔,存儲,數據庫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分布式文檔存儲數據庫之MongoDB訪問控制的操作方法》相關的同類信息!
  • 本頁收集關于分布式文檔存儲數據庫之MongoDB訪問控制的操作方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品免费在线| 性欧美疯狂xxxxbbbb| 丁香亚洲综合激情啪啪综合| 亚洲一级片在线观看| 久久久亚洲高清| 欧美一级生活片| 欧美中文字幕一区| 成人av电影观看| 国产一区二区伦理| 偷拍一区二区三区| 亚洲国产人成综合网站| 中文字幕日韩欧美一区二区三区| 亚洲精品一区二区三区精华液| 欧美色综合网站| 欧美色国产精品| 精品视频在线免费看| 日本电影欧美片| 一本久久a久久免费精品不卡| 不卡的电影网站| 不卡欧美aaaaa| 97久久超碰国产精品| 99精品视频在线观看免费| 99riav一区二区三区| 91视频在线看| 在线观看91视频| 欧美性猛交xxxx乱大交退制版| 日本高清无吗v一区| 欧美在线免费播放| 欧美精品一二三区| 91精品国产色综合久久久蜜香臀| 欧美日韩另类一区| 91麻豆精品91久久久久久清纯 | 国产福利一区二区| 国产盗摄一区二区| www.爱久久.com| 91久久人澡人人添人人爽欧美 | 亚洲动漫第一页| 天天影视涩香欲综合网| 蜜臀91精品一区二区三区 | 中文字幕日韩av资源站| 一区在线中文字幕| 午夜一区二区三区在线观看| 丝袜脚交一区二区| 国产一区二区三区免费在线观看| 成人免费视频视频| 欧美性猛交一区二区三区精品| 日韩欧美亚洲国产精品字幕久久久| 国产日韩视频一区二区三区| 亚洲蜜臀av乱码久久精品| 日本在线不卡视频一二三区| 国产成人av自拍| 欧美日韩亚洲国产综合| 26uuu精品一区二区在线观看| 国产精品国产三级国产普通话蜜臀 | av在线播放不卡| 欧美精品日韩综合在线| 久久久高清一区二区三区| 一区二区免费在线播放| 无吗不卡中文字幕| aaa国产一区| 国产一区二区三区久久久| 成人av免费在线| 欧美一区日韩一区| 国产精品黄色在线观看| 人人爽香蕉精品| 91丨porny丨首页| 久久先锋资源网| ●精品国产综合乱码久久久久| 日韩精品一区第一页| 99精品在线观看视频| 精品国产91久久久久久久妲己| 国产精品国产三级国产三级人妇| 日本va欧美va欧美va精品| av不卡免费电影| 久久精品亚洲精品国产欧美kt∨| 亚洲一区二三区| 成人免费不卡视频| 精品sm捆绑视频| 婷婷六月综合网| 在线观看中文字幕不卡| 久久精品夜色噜噜亚洲aⅴ| 性感美女极品91精品| 色综合久久中文综合久久97| 国产精品日日摸夜夜摸av| 国产一区二区三区在线观看免费视频| 91精品黄色片免费大全| 亚洲国产中文字幕在线视频综合 | 中文字幕的久久| 国产一区在线看| 精品国产乱码久久| 久久精品99久久久| 欧美一卡二卡三卡四卡| 亚洲视频在线观看三级| 一区二区三区蜜桃| av爱爱亚洲一区| 亚洲人xxxx| 97国产精品videossex| 欧美日韩电影一区| 亚洲成人先锋电影| 9191成人精品久久| 男人操女人的视频在线观看欧美| 在线播放中文一区| 毛片av一区二区三区| 欧美精品一区二区精品网| 国产一区不卡精品| 国产亚洲一区二区三区在线观看| 精品在线观看免费| 国产欧美综合在线观看第十页| 国产毛片一区二区| 中文字幕va一区二区三区| 99国内精品久久| 亚洲精品成人悠悠色影视| 91久久久免费一区二区| 午夜成人在线视频| 精品av综合导航| av中文字幕不卡| 一区二区视频在线| 欧美日韩精品欧美日韩精品| 日韩电影一二三区| 久久久久久亚洲综合影院红桃 | 久久亚洲欧美国产精品乐播| 成人av电影在线播放| 午夜在线成人av| 久久久久久久久99精品| 99久久夜色精品国产网站| 亚洲成人你懂的| 26uuu欧美| 在线亚洲人成电影网站色www| 肉肉av福利一精品导航| 日韩精品一区二区三区四区 | 成人免费毛片高清视频| 亚洲裸体在线观看| 91精品国产入口| 成人午夜激情片| 亚洲黄一区二区三区| 日韩写真欧美这视频| 成人aaaa免费全部观看| 蜜臀精品久久久久久蜜臀| 国产精品一区2区| 91麻豆精品久久久久蜜臀| 国产宾馆实践打屁股91| 国产一区二区精品久久91| 国产精品久久三| 91精品国产综合久久久久久久 | av中文字幕一区| 国产日韩av一区二区| 欧美色手机在线观看| 久久爱www久久做| 亚洲成年人网站在线观看| 中文一区在线播放| 日韩精品一区二区三区视频| 一本色道久久综合亚洲精品按摩| 国内精品伊人久久久久av影院| 亚洲一区二区三区中文字幕在线| 欧美成人午夜电影| 欧美日韩日日骚| 色综合天天综合色综合av| 国产精品亚洲一区二区三区妖精| 午夜精品久久久久久久99樱桃| 久久色.com| 日韩欧美一区二区不卡| 欧美在线观看一二区| 成年人国产精品| 国产精品99久久久久久久女警| 日本少妇一区二区| 亚洲一区二区在线免费观看视频| 国产精品午夜春色av| 日韩欧美色综合网站| 91.com视频| 欧美一级欧美一级在线播放| 91精品办公室少妇高潮对白| 99精品久久久久久| 色综合网站在线| 欧美影院一区二区| av中文字幕亚洲| 91在线观看视频| 91在线观看免费视频| 99精品视频中文字幕| 99久久国产免费看| 99国产精品久| gogogo免费视频观看亚洲一| 成人国产免费视频| av电影在线观看不卡| 色婷婷国产精品| 欧美日韩一区二区三区四区五区| 欧美日韩在线电影| 69久久夜色精品国产69蝌蚪网| 日韩美女视频在线| 久久久久久免费| 国产精品久久一级| 亚洲精品日韩综合观看成人91| 亚洲与欧洲av电影| 人人爽香蕉精品| 国产成人免费高清| 91视频一区二区| 欧美日韩免费在线视频| 日韩欧美色综合| 国产精品久久久久久久久免费桃花| 亚洲女同ⅹxx女同tv| 日本三级韩国三级欧美三级|