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

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ MongoDB啟用身份驗(yàn)證
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ù)庫(kù)引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點(diǎn)
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動(dòng)遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫(kù)
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級(jí)索引
MongoDB數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫(kù)
MongoDB啟用身份驗(yàn)證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB啟用身份驗(yàn)證

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

對(duì)于認(rèn)證,MongoDB支持各種認(rèn)證機(jī)制。

以下教程啟用獨(dú)立 mongod 實(shí)例的訪問(wèn)控制,并使用默認(rèn)身份驗(yàn)證機(jī)制。

用戶管理員

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

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

過(guò)程

以下過(guò)程首先將用戶管理員添加到運(yùn)行無(wú)訪問(wèn)控制的 MongoDB 實(shí)例,然后啟用訪問(wèn)控制。

第一步:?jiǎn)?dòng)MongoDB無(wú)需訪問(wèn)控制

例如,以下啟動(dòng)不具有訪問(wèn)控制的獨(dú)立 mongod 實(shí)例。

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

第二步:連接到實(shí)例

例如,使用mongo shell連接到實(shí)例。

mongo --port 27017

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

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

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

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

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

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

第四步:重新啟動(dòng)具有訪問(wèn)控制的MongoDB實(shí)例

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

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

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

第五步:以用戶管理員身份進(jìn)行連接和驗(yàn)證

使用 mongo shell,可以:

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

在連接期間進(jìn)行身份驗(yàn)證

使用-u <username>-p <password>--authenticationDatabase <database>命令行選項(xiàng)啟動(dòng)一個(gè)mongo shell

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

連接后驗(yàn)證

mongo shell 連接到 mongodb,也就是先連接,后驗(yàn)證用戶身份 :

mongo --port 27017

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

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

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

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

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

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

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

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

第七步:連接并驗(yàn)證為myTester

在連接期間進(jìn)行身份驗(yàn)證

使用-u <username>,-p <password>--authenticationDatabase <database>命令行選項(xiàng)啟動(dòng)一個(gè)mongo shell

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

連接后驗(yàn)證

mongo shell連接到 mongodb:

$ mongo --port 27017

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

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

使用用戶 myTester 插入一個(gè)集合

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

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

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

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