在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB啟用身份驗證
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達式
MongoDB查詢文檔
MongoDB關聯(lián)關系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB啟用身份驗證

對MongoDB部署啟用訪問控制會強制執(zhí)行用戶身份驗證,要求在登錄MongoDB系統(tǒng)用戶識別自己。 當訪問啟用了訪問控制的MongoDB部署時,用戶只能執(zhí)行由其角色確定的操作。

對于認證,MongoDB支持各種認證機制。

以下教程啟用獨立 mongod 實例的訪問控制,并使用默認身份驗證機制。

用戶管理員

啟用訪問控制后,請確保在 admin 數(shù)據(jù)庫中擁有 userAdminuserAdminAnyDatabase 角色的用戶。該用戶可以管理用戶和角色,例如:創(chuàng)建用戶,授予或撤銷用戶角色,以及創(chuàng)建或修改定義角色。

可以在啟用訪問控制之前或之后創(chuàng)建用戶。如果在創(chuàng)建任何用戶之前啟用訪問控制,MongoDB將提供本地主機異常,允許在管理數(shù)據(jù)庫中創(chuàng)建用戶管理員。創(chuàng)建后,必須作為用戶管理員進行身份驗證,以根據(jù)需要創(chuàng)建其他用戶。

過程

以下過程首先將用戶管理員添加到運行無訪問控制的 MongoDB 實例,然后啟用訪問控制。

第一步:啟動MongoDB無需訪問控制

例如,以下啟動不具有訪問控制的獨立 mongod 實例。

mongod --port 27017 --dbpath /data/db1

第二步:連接到實例

例如,使用mongo shell連接到實例。

mongo --port 27017

根據(jù)需要指定其他命令行選項以將mongo shell連接到部署,例如--host。

第三步:創(chuàng)建用戶管理員

在管理數(shù)據(jù)庫中,添加具有 userAdminAnyDatabase 角色的用戶。 例如,以下在 admin 數(shù)據(jù)庫中創(chuàng)建用戶 myUserAdmin

注意:創(chuàng)建用戶的數(shù)據(jù)庫(在此示例中為admin)是用戶的身份驗證數(shù)據(jù)庫。用戶將對該數(shù)據(jù)庫進行身份驗證,但用戶可以在其他數(shù)據(jù)庫中擔任角色; 即用戶的認證數(shù)據(jù)庫不限制用戶的權限。

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

執(zhí)行上面命令后,斷開mongo shell。

第四步:重新啟動具有訪問控制的MongoDB實例

使用--auth命令行選項重新啟動 mongod 實例,或者如果使用配置文件,則執(zhí)行security.authorization設置。

mongod --auth --port 27017 --dbpath /data/db1

連接到此實例的客戶端現(xiàn)在必須以 MongoDB 用戶身份進行身份驗證??蛻糁荒軋?zhí)行由其分配的角色確定的操作。

第五步:以用戶管理員身份進行連接和驗證

使用 mongo shell,可以:

  • 通過傳遞用戶憑據(jù)或
  • 連接第一個withouth身份驗證,然后發(fā)出db.auth()方法進行身份驗證。

在連接期間進行身份驗證

使用-u <username>,-p <password>--authenticationDatabase <database>命令行選項啟動一個mongo shell

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

連接后驗證

mongo shell 連接到 mongodb,也就是先連接,后驗證用戶身份 :

mongo --port 27017

切換到身份驗證數(shù)據(jù)庫(在這種情況下為admin),并使用db.auth(<username>,<pwd>)方法進行身份驗證:

use admin
db.auth("myUserAdmin", "abc123" )

第六步:根據(jù)需要創(chuàng)建其他用戶

當管理員用戶進行身份驗證通過之后,可使用db.createUser()創(chuàng)建其他用戶??梢詾橛脩舴峙淙魏蝺?nèi)置角色或用戶定義的角色。

myUserAdmin用戶只具有管理用戶和角色的權限。如果使用myUserAdmin嘗試執(zhí)行任何其他操作,例如從test數(shù)據(jù)庫中的foo集合讀取數(shù)據(jù),MongoDB將返回錯誤。

以下操作將用戶 myTester 添加到在test數(shù)據(jù)庫中并給予test數(shù)據(jù)庫的readWrite角色以及在reporting數(shù)據(jù)庫中讀取角色。

注意:創(chuàng)建用戶的數(shù)據(jù)庫(在本示例中為test)是該用戶的身份驗證數(shù)據(jù)庫。雖然用戶將對該數(shù)據(jù)庫進行身份驗證,但用戶可以在其他數(shù)據(jù)庫中擔任角色; 即用戶的認證數(shù)據(jù)庫不會限制用戶的權限。

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

第七步:連接并驗證為myTester

在連接期間進行身份驗證

使用-u <username>,-p <password>--authenticationDatabase <database>命令行選項啟動一個mongo shell

$ mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

連接后驗證

mongo shell連接到 mongodb:

$ mongo --port 27017

切換到身份驗證數(shù)據(jù)庫(在這里為test),并使用db.auth(<username>,<pwd>)方法進行身份驗證:

> use test
> db.auth("myTester", "xyz123" )

使用用戶 myTester 插入一個集合

使用用戶 myTester,此用戶有權在test數(shù)據(jù)庫中執(zhí)行讀寫操作(以及在reporting數(shù)據(jù)庫中執(zhí)行讀操作)。 例如,在test數(shù)據(jù)庫中執(zhí)行以下插入操作:

>  db.foo.insert( { x: 1, y: 1 } )

最后,使用用戶 myTester,在reporting數(shù)據(jù)庫中執(zhí)行插入操作看看返回結果:

> use reporting
db.auth("myTester", "xyz123" )
db.product.insert( { x: 1, y: 1 } )