最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mongodb如何開啟用戶訪問控制詳解

 更新時間:2017年01月25日 09:04:08   作者:不爭  
默認啟動 MongoDB 服務(wù)時沒有任何參數(shù),可以對數(shù)據(jù)庫任意操 作,而且可以遠程訪問數(shù)據(jù)庫,所以推薦開發(fā)階段可以不設(shè)置任何參數(shù),但對于生產(chǎn)環(huán)境還是要仔細考慮一下安全方面的因素,下面就介紹了Mongodb開啟用戶訪問控制的相關(guān)資料。

前言

Mongodb 數(shù)據(jù)庫默認情況下是沒有訪問控制的,整個數(shù)據(jù)庫對外是開發(fā)的,只要能連上數(shù)據(jù)庫,則可以進行任何操作,這會對數(shù)據(jù)帶來很大的風險。當然,我們可以啟用mongodb的訪問控制,只讓通過認證的用戶才能對數(shù)據(jù)庫進行角色范圍內(nèi)的操作。

啟用訪問控制可以通過在啟動 mongodb 時指定 --auth 參數(shù)來設(shè)置,另外還涉及到創(chuàng)建用戶 db.createUser 操作以及一些角色的定義,我們先來看這部分內(nèi)容。

db.createUser() 用法

db.createUser({
 user: "$USERNAME",
 pwd: "$PASSWROD",
 roles: [
 { role: "$ROLE_NAME", db: "$DBNAME"}
 ]
})

參數(shù)說明:

  • user 是用戶名
  • pwd 是密碼
  • role 來指定用戶的角色
  • db 來指定所屬的數(shù)據(jù)庫
  • roles 是用戶所有角色的集合

Mongodb 預(yù)定義角色

Mongodb 中預(yù)定義了一些角色,把這些角色賦予給適當?shù)挠脩羯?,用戶就只能進行角色范圍內(nèi)的操作。

1、數(shù)據(jù)庫用戶角色 (所有數(shù)據(jù)庫都有)

  • read 用戶可以讀取當前數(shù)據(jù)庫的數(shù)據(jù)
  • readWrite 用戶可以讀寫當前數(shù)據(jù)庫的數(shù)據(jù)

2、數(shù)據(jù)庫管理角色(所有數(shù)據(jù)庫都有)

  1. dbAdmin 管理員用戶但不能對用戶和角色管理授權(quán)
  2. dbOwner 數(shù)據(jù)庫所有者可進行任何管理任務(wù)
  3. userAdmin 可以管理當前數(shù)據(jù)的用戶和角色

3、集群管理角色(admin數(shù)據(jù)庫可用)

  1. clusterAdmin 集群所有管理權(quán)限,是 clusterManager , clusterMonitor, hostManager 合集
  2. clusterManager 集群管理和監(jiān)控
  3. clusterMonitor 集群監(jiān)控,只讀的
  4. hostManager 監(jiān)控和管理服務(wù)器

4、備份和恢復(fù)角色(admin數(shù)據(jù)庫可用)

  1. backup
  2. restore

5、所有數(shù)據(jù)庫角色(admin數(shù)據(jù)庫可用)

  1. readAnyDatabase 讀取所有數(shù)據(jù)庫
  2. readWriteAnyDatabase 讀寫所有數(shù)據(jù)庫
  3. userAdminAnyDatabase 所有數(shù)據(jù)庫的 userAdmin 權(quán)限
  4. dbAdminAnyDatabase 所有數(shù)據(jù)庫的 dbAdmin 權(quán)限

6、超級角色(admin數(shù)據(jù)庫可用)

  1. root 超級用戶

7、內(nèi)部角色

  • __system 所有操作權(quán)限

更多預(yù)定于角色的信息請參看:https://docs.mongodb.com/manual/core/security-built-in-roles/

啟用訪問控制的步驟

1, 啟動 mongodb 實例,關(guān)閉 訪問控制

不帶 --auth

./mongod

2, 連接上 mongodb 實例

./mongo

3,創(chuàng)建用戶管理員

在 admin 數(shù)據(jù)庫中添加一個 具有 userAdminAnyDatabase 角色的用戶作為用戶管理用戶。下面的例子中創(chuàng)建了 admin 為用戶管理員。

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

退出連接

4,重啟數(shù)據(jù)庫啟用訪問控制

命令行啟動,只需要添加 --auth 參數(shù)

./mongo --auth

5,使用管理用戶連接,有兩種方法

  1. 使用命令行 ./mongo -u "$USERNAME" -p "$PASSWROD" --authenticationDatabase "admin"
  2. 使用 db.auth()

我們使用第二種

> 
> use admin
switched to db admin
> db.auth("admin", "admin")
1
>

1 表示認證成功

6, 為某個數(shù)據(jù)庫創(chuàng)建獨立用戶

以下為 test 數(shù)據(jù)庫 創(chuàng)建具有讀寫權(quán)限的用戶 test

admin 用戶由于只有 userAdminAnyDatabase 權(quán)限,所以沒有 test 數(shù)據(jù)的讀寫權(quán)限,所以,為了讀寫 test 數(shù)據(jù)庫,我們需要創(chuàng)建一個用戶。先看一下直接用 admin 會報什么錯誤

> use test
> show collections
2017-01-13T13:49:17.691+0800 E QUERY [thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not authorized on test to execute command { listCollections: 1.0, filter: {} }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:773:1
DB.prototype.getCollectionInfos@src/mongo/shell/db.js:785:19
DB.prototype.getCollectionNames@src/mongo/shell/db.js:796:16
shellHelper.show@src/mongo/shell/utils.js:754:9
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1

我們直接使用 show collections , 則報錯:not authorized on test to execute command ,意思是沒有權(quán)限。

> use test
switched to db test
> db.createUser({
... user: "test",
... pwd: "test",
... roles: [
... { role: "readWrite", db: "test"}
... ]
... })
Successfully added user: {
 "user" : "test",
 "roles" : [
  {
   "role" : "readWrite",
   "db" : "test"
  }
 ]
}
>

然后我們使用 db.auth(“test”, “test”) , 再執(zhí)行命令 則沒有報錯

> db.auth("test", "test")
1
> 
> show collections

試著寫入一條數(shù)據(jù),也是正常的。

> db.t.insert({name:"buzheng"});
WriteResult({ "nInserted" : 1 })
> db.t.find();
{ "_id" : ObjectId("58786c84bf5dd606ddfe1144"), "name" : "buzheng" }
>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Mongo Shell 執(zhí)行環(huán)境的基本操作

    Mongo Shell 執(zhí)行環(huán)境的基本操作

    Mongo Shell 是 MongoDB 的交互式 JavaScript shell,用于與 MongoDB 數(shù)據(jù)庫進行交互,這篇文章主要介紹了Mongo Shell 執(zhí)行環(huán)境,需要的朋友可以參考下
    2025-02-02
  • MongoDB快速入門筆記(六)之MongoDB的文檔修改操作

    MongoDB快速入門筆記(六)之MongoDB的文檔修改操作

    這篇文章主要介紹了MongoDB快速入門筆記(六)之MongoDB的文檔修改操作的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • MongoDB中sort()排序方法、aggregate()聚合方法和索引代碼示例

    MongoDB中sort()排序方法、aggregate()聚合方法和索引代碼示例

    這篇文章主要給大家介紹了關(guān)于MongoDB中sort()排序方法、aggregate()聚合方法和索引的相關(guān)資料,MongoDB的聚合函數(shù)Aggregate是一組用于對MongoDB中的數(shù)據(jù)集進行聚合操作的函數(shù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 基于MongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解

    基于MongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解

    下面小編就為大家?guī)硪黄贛ongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • MongoDB中強大的統(tǒng)計框架Aggregation使用實例解析

    MongoDB中強大的統(tǒng)計框架Aggregation使用實例解析

    這篇文章主要介紹了MongoDB中強大的統(tǒng)計框架Aggregation使用實例解析,文中舉了Python和Java使用Aggregation的數(shù)據(jù)統(tǒng)計例子進行講解,需要的朋友可以參考下
    2016-01-01
  • Mongoose 在egg中的使用詳解

    Mongoose 在egg中的使用詳解

    這篇文章主要介紹了Mongoose 在egg中的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • MongoDB db.serverStatus()輸出內(nèi)容中文注釋

    MongoDB db.serverStatus()輸出內(nèi)容中文注釋

    這篇文章主要介紹了MongoDB db.serverStatus()輸出內(nèi)容中文注釋,本文收集了2個版本的中文注釋來講解,需要的朋友可以參考下
    2014-08-08
  • MongoDB系列教程(二):MongoDB簡介

    MongoDB系列教程(二):MongoDB簡介

    這篇文章主要介紹了MongoDB系列教程(二):MongoDB簡介,本文講解了MongoDB介紹、MongoDB功能特性、mongoDB數(shù)據(jù)架構(gòu)等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB分片集群部署詳解

    MongoDB分片集群部署詳解

    這篇文章主要介紹了MongoDB分片集群部署詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • MongoDB的索引

    MongoDB的索引

    數(shù)據(jù)庫中的索引就是用來提高查詢操作的性能,但是會影響插入、更新和刪除的效率,因為數(shù)據(jù)庫不僅要執(zhí)行這些操作,還要負責索引的更新
    2017-05-05

最新評論

长岛县| 湖南省| 毕节市| 乌兰浩特市| 江口县| 丘北县| 台中县| 鲜城| 天气| 阿克苏市| 平遥县| 余姚市| 柳河县| 溧水县| 介休市| 铜川市| 施甸县| 花垣县| 曲水县| 郯城县| 临漳县| 岑溪市| 勃利县| 电白县| 青海省| 乐至县| 通州市| 瓮安县| 绩溪县| 三台县| 察隅县| 凤山县| 祁东县| 上林县| 延寿县| 闵行区| 长沙市| 河津市| 原阳县| 吐鲁番市| 邛崃市|