主頁(yè) > 知識(shí)庫(kù) > Mongodb如何開(kāi)啟用戶(hù)訪問(wèn)控制詳解

Mongodb如何開(kāi)啟用戶(hù)訪問(wèn)控制詳解

熱門(mén)標(biāo)簽:呼和浩特電銷(xiāo)外呼系統(tǒng)加盟 電銷(xiāo)機(jī)器人是什么軟件 杭州人工電銷(xiāo)機(jī)器人價(jià)格 云南外呼系統(tǒng) 老虎洗衣店地圖標(biāo)注 怎么投訴地圖標(biāo)注 濟(jì)南電銷(xiāo)機(jī)器人加盟公司 蘋(píng)果汽車(chē)租賃店地圖標(biāo)注 廣州長(zhǎng)安公司怎樣申請(qǐng)400電話

前言

Mongodb 數(shù)據(jù)庫(kù)默認(rèn)情況下是沒(méi)有訪問(wèn)控制的,整個(gè)數(shù)據(jù)庫(kù)對(duì)外是開(kāi)發(fā)的,只要能連上數(shù)據(jù)庫(kù),則可以進(jìn)行任何操作,這會(huì)對(duì)數(shù)據(jù)帶來(lái)很大的風(fēng)險(xiǎn)。當(dāng)然,我們可以啟用mongodb的訪問(wèn)控制,只讓通過(guò)認(rèn)證的用戶(hù)才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行角色范圍內(nèi)的操作。

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

db.createUser() 用法

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

參數(shù)說(shuō)明:

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

Mongodb 預(yù)定義角色

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

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

  • read 用戶(hù)可以讀取當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)
  • readWrite 用戶(hù)可以讀寫(xiě)當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)

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

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

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

  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ù)庫(kù)可用)

  1. backup
  2. restore

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

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

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

  1. root 超級(jí)用戶(hù)

7、內(nèi)部角色

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

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

啟用訪問(wèn)控制的步驟

1, 啟動(dòng) mongodb 實(shí)例,關(guān)閉 訪問(wèn)控制

不帶 --auth

./mongod

2, 連接上 mongodb 實(shí)例

./mongo

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

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

> 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ù)庫(kù)啟用訪問(wèn)控制

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

./mongo --auth

5,使用管理用戶(hù)連接,有兩種方法

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

我們使用第二種

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

1 表示認(rèn)證成功

6, 為某個(gè)數(shù)據(jù)庫(kù)創(chuàng)建獨(dú)立用戶(hù)

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

admin 用戶(hù)由于只有 userAdminAnyDatabase 權(quán)限,所以沒(méi)有 test 數(shù)據(jù)的讀寫(xiě)權(quán)限,所以,為了讀寫(xiě) test 數(shù)據(jù)庫(kù),我們需要?jiǎng)?chuàng)建一個(gè)用戶(hù)。先看一下直接用 admin 會(huì)報(bào)什么錯(cuò)誤

> 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 , 則報(bào)錯(cuò):not authorized on test to execute command ,意思是沒(méi)有權(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í)行命令 則沒(méi)有報(bào)錯(cuò)

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

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

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

總結(jié)

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

您可能感興趣的文章:
  • MongoDB 3.0+安全權(quán)限訪問(wèn)控制詳解
  • 分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù)之MongoDB備份與恢復(fù)的實(shí)踐詳解
  • 分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù)之MongoDB分片集群的問(wèn)題
  • 分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù)之MongoDB訪問(wèn)控制的操作方法

標(biāo)簽:興安盟 自貢 泰安 玉林 廈門(mén) 無(wú)錫 遼陽(yáng) 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mongodb如何開(kāi)啟用戶(hù)訪問(wèn)控制詳解》,本文關(guān)鍵詞  Mongodb,如何,開(kāi)啟,用戶(hù),訪問(wèn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mongodb如何開(kāi)啟用戶(hù)訪問(wèn)控制詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Mongodb如何開(kāi)啟用戶(hù)訪問(wèn)控制詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章