欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

db.createUser() 用法

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

參數說明:

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

Mongodb 預定義角色

Mongodb 中預定義了一些角色,把這些角色賦予給適當的用戶上,用戶就只能進行角色范圍內的操作。

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

  • read 用戶可以讀取當前數據庫的數據
  • readWrite 用戶可以讀寫當前數據庫的數據

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

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

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

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

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

  1. backup
  2. restore

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

  1. readAnyDatabase 讀取所有數據庫
  2. readWriteAnyDatabase 讀寫所有數據庫
  3. userAdminAnyDatabase 所有數據庫的 userAdmin 權限
  4. dbAdminAnyDatabase 所有數據庫的 dbAdmin 權限

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

  1. root 超級用戶

7、內部角色

  • __system 所有操作權限

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

啟用訪問控制的步驟

1, 啟動 mongodb 實例,關閉 訪問控制

不帶 --auth

./mongod

2, 連接上 mongodb 實例

./mongo

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

在 admin 數據庫中添加一個 具有 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,重啟數據庫啟用訪問控制

命令行啟動,只需要添加 --auth 參數

./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, 為某個數據庫創(chuàng)建獨立用戶

以下為 test 數據庫 創(chuàng)建具有讀寫權限的用戶 test

admin 用戶由于只有 userAdminAnyDatabase 權限,所以沒有 test 數據的讀寫權限,所以,為了讀寫 test 數據庫,我們需要創(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 ,意思是沒有權限。

> 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

試著寫入一條數據,也是正常的。

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

總結

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

相關文章

  • MongoDB常用數據類型分享

    MongoDB常用數據類型分享

    這篇文章主要介紹了MongoDB常用數據類型,???JSON是一種簡單的數據表示方式,它易于理解、易于解析、易于記憶,?BSON是一種類JSON的二進制形式的存儲格,更多類型需要的小伙伴可以參考下文詳細介紹
    2022-04-04
  • MongoDB賬戶密碼設置的方法詳解

    MongoDB賬戶密碼設置的方法詳解

    這篇文章主要給大家介紹了關于MongoDB賬戶密碼設置的相關資料,我們知道m(xù)ysql在安裝的時候需要我們設置一個數據庫默認的用戶名和密碼,mongodb也不例外,需要的朋友可以參考下
    2023-09-09
  • Mongo管理用戶相關操作總結

    Mongo管理用戶相關操作總結

    這篇文章主要介紹了Mongo管理用戶相關操作總結,本文講解了列出所有用戶、禁用認證模式、創(chuàng)建用戶、特定數據庫管理權限的用戶、一般用戶、刪除用戶等常用操作技巧、操作示例,需要的朋友可以參考下
    2015-07-07
  • 關于單臺MongoDB實例開啟Oplog的過程詳解

    關于單臺MongoDB實例開啟Oplog的過程詳解

    這篇文章主要給大家介紹了關于單臺MongoDB實例開啟Oplog的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • mongodb數據庫遷移變更的解決方案

    mongodb數據庫遷移變更的解決方案

    眾所周知mongodb數據庫是一個非關系類型的數據,有著非常靈活和高性能的特點得到了開發(fā)者的喜愛,這篇文章主要給大家介紹了關于mongodb數據庫遷移變更的相關資料,需要的朋友可以參考下
    2021-09-09
  • mongose 模糊檢索實現方法示例詳解

    mongose 模糊檢索實現方法示例詳解

    這篇文章主要為大家介紹了mongose 模糊檢索實現方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • MongoDB中對文檔的增刪查改基本操作方法總結

    MongoDB中對文檔的增刪查改基本操作方法總結

    MongoDB是一個NoSQL數據庫,其中document文檔就相當于關系型數據庫中的行,這里我們初步整理了MongoDB中對文檔的增刪查改基本操作方法總結,需要的朋友可以參考下:
    2016-06-06
  • Mongodb啟動命令參數中文說明

    Mongodb啟動命令參數中文說明

    這篇文章主要介紹了Mongodb啟動命令參數中文說明,本文包括基本配置、主/從參數、Sharding(分片)選項等內容,需要的朋友可以參考下
    2014-10-10
  • MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計劃

    MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計劃

    這篇文章主要介紹了MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計劃的相關資料,需要的朋友可以參考下
    2016-02-02
  • 如何對 MongoDB 進行性能優(yōu)化(五個簡單步驟)

    如何對 MongoDB 進行性能優(yōu)化(五個簡單步驟)

    MongoDB一直是最流行的NoSQL,而根據DB-Engines Ranking最新的排行,時下MongoDB已經擊敗PostgreSQL躍居數據庫總排行的第四位,僅次于Oracle、MySQL和Microsoft SQL Server。本文給大家介紹MongoDB性能優(yōu)化的簡單總結。
    2015-10-10

最新評論